MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

लूप क्वेरी के आधार पर सही या गलत आउटपुट नहीं कर रहा है

आपके पास एक समस्या वह स्थान है जहां आप isFriend के परिणाम को लॉग करने का प्रयास कर रहे हैं। आपके द्वारा खोज लूप में प्रवेश करते ही isFriend को असत्य पर सेट करने के ठीक बाद यह वर्तमान में लॉग किया जा रहा है।

उस कथन को लूप के लिए आंतरिक के ठीक बाद स्थानांतरित करने की आवश्यकता है।

सभी इनपुट के बिना, यह अनुमान लगाना बहुत मुश्किल हो जाता है कि समस्या कहाँ हो सकती है।

इनपुट के रूप में निम्नलिखित का उपयोग करना (क्या आप JSON प्रारूप में वास्तविक इनपुट प्रदान कर सकते हैं?):

var users = [
    {
        lastName: 'Smith',
        '_id': "51ee2017c2023cc816000001"
    },
    {
        lastName: 'Jones',
        '_id': "51ee2017c2023cc816000002"
    },
    {
        lastName: 'Macks',
        '_id': "51ee2017c2023cc816000003"
    }
];

var signedInUser = {
    friendRequest: [{
        "friendId": "51ee2017c2023cc816000002",
        "read": 0,
        "date_requested": "2013-07-23T06:29:39.021Z"
    }, {
        "friendId": "51ee203cc2023cc816000003",
        "read": 0,
        "date_requested": "2013-07-23T06:42:37.872Z"
    }]
};

function test(err, signedInUser) {
    console.log("\nsignedInUser.friendRequest\n" + JSON.stringify(signedInUser.friendRequest, null, 2));
    for (var x = 0; x < users.length; x++) {
        users[x].isFriend = false;
        console.log("\n" + users[x].lastName);
        for (var i = 0; i < signedInUser.friendRequest.length; i++) {
            console.log(users[x]._id + ' - ' + signedInUser.friendRequest[i].friendId);
            if (users[x]._id === signedInUser.friendRequest[i].friendId) {
                users[x].isFriend = true;
                console.log('test');
                break;
            }
        }
        console.log(users[x].isFriend);
    }

    console.log("\nFinal users:\n" + JSON.stringify(users, null, 2));
}

test(null, signedInUser);

मुझे निम्नलिखित परिणाम दिखाई दे रहे हैं:

signedInUser.friendRequest
[
  {
    "friendId": "51ee2017c2023cc816000002",
    "read": 0,
    "date_requested": "2013-07-23T06:29:39.021Z"
  },
  {
    "friendId": "51ee203cc2023cc816000003",
    "read": 0,
    "date_requested": "2013-07-23T06:42:37.872Z"
  }
]

Smith
51ee2017c2023cc816000001 - 51ee2017c2023cc816000002
51ee2017c2023cc816000001 - 51ee203cc2023cc816000003
false

Jones
51ee2017c2023cc816000002 - 51ee2017c2023cc816000002
test
true

Macks
51ee2017c2023cc816000003 - 51ee2017c2023cc816000002
51ee2017c2023cc816000003 - 51ee203cc2023cc816000003
false

Final users:
[
  {
    "lastName": "Smith",
    "_id": "51ee2017c2023cc816000001",
    "isFriend": false
  },
  {
    "lastName": "Jones",
    "_id": "51ee2017c2023cc816000002",
    "isFriend": true
  },
  {
    "lastName": "Macks",
    "_id": "51ee2017c2023cc816000003",
    "isFriend": false
  }
]

लॉग स्टेटमेंट के गलत स्थान पर होने के अलावा (मुझे नहीं लगता कि मैंने आपके कोड के शब्दार्थ को बदल दिया है), इनपुट के इस सेट के साथ, तर्क काम करता है। यह संभावना है कि आप जिस इनपुट की अपेक्षा कर रहे थे वह वह नहीं है जो आप प्राप्त कर रहे हैं।

यह पता चला है कि ओपी नोडज के लिए नेवला मूल चालक का उपयोग कर रहा था और शोध के बाद यहां समस्या के तुलनात्मक हिस्से का उत्तर मिला:नेवला _id और स्ट्रिंग्स की तुलना करना



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDb से कनेक्शन की वर्तमान संख्या की जाँच करें

  2. किसी समूह से नवीनतम टाइमस्टैम्प वाले दस्तावेज़ों को केवल क्वेरी कैसे करें?

  3. मोंगो दस्तावेज़ में नेस्टेड फ़ील्ड का डेटाटाइप कैसे बदलें?

  4. नोडज / नेवला के साथ एक उप-दस्तावेज़ का आंशिक अद्यतन

  5. MongoDB सबफील्ड की सूची प्रक्षेपण