MongoDB में $and ऑपरेटर से ऐरे के अंदर दो ID एक साथ खोजना
ऐरे के अंदर ऑब्जेक्ट में दो अलग-अलग ID दोनों मौजूद हों, ऐसे डॉक्यूमेंट खोजने के लिए $and ऑपरेटर उपयोग करें।
कलेक्शन बनाएं और डॉक्यूमेंट इन्सर्ट करें
> db.twoSpecificIdsDemo.insertOne({
PlayerId: 1,
"PlayerDetails": [
{id: 100, "PlayerName": "Chris"},
{id: 101, "PlayerName": "Sam"},
{id: 102, "PlayerName": "Robert"},
{id: 103, "PlayerName": "Carol"}
]
});
{ "acknowledged": true, "insertedId": ObjectId("5cd3e130edc6604c74817ce4") }
> db.twoSpecificIdsDemo.insertOne({
PlayerId: 1,
"PlayerDetails": [
{id: 104, "PlayerName": "Mike"},
{id: 105, "PlayerName": "Bob"},
{id: 102, "PlayerName": "Ramit"},
{id: 106, "PlayerName": "David"}
]
});
{ "acknowledged": true, "insertedId": ObjectId("5cd3e167edc6604c74817ce5") }
सभी डॉक्यूमेंट देखें
> db.twoSpecificIdsDemo.find().pretty();
{
"_id": ObjectId("5cd3e130edc6604c74817ce4"),
"PlayerId": 1,
"PlayerDetails": [
{"id": 100, "PlayerName": "Chris"},
{"id": 101, "PlayerName": "Sam"},
{"id": 102, "PlayerName": "Robert"},
{"id": 103, "PlayerName": "Carol"}
]
}
{
"_id": ObjectId("5cd3e167edc6604c74817ce5"),
"PlayerId": 1,
"PlayerDetails": [
{"id": 104, "PlayerName": "Mike"},
{"id": 105, "PlayerName": "Bob"},
{"id": 102, "PlayerName": "Ramit"},
{"id": 106, "PlayerName": "David"}
]
}
ID 102 AND 103 दोनों वाले डॉक्यूमेंट खोजें
> db.twoSpecificIdsDemo.find({
$and: [
{"PlayerDetails.id": 102},
{"PlayerDetails.id": 103}
]
}).pretty();
{
"_id": ObjectId("5cd3e130edc6604c74817ce4"),
"PlayerId": 1,
"PlayerDetails": [
{"id": 100, "PlayerName": "Chris"},
{"id": 101, "PlayerName": "Sam"},
{"id": 102, "PlayerName": "Robert"},
{"id": 103, "PlayerName": "Carol"}
]
}
क्यों $and जरूरी है
{"PlayerDetails.id": 102, "PlayerDetails.id": 103}लिखने पर दूसरा पहले को ओवरराइट कर देता (क्योंकि JSON ऑब्जेक्ट में डुप्लिकेट की नहीं)$andदोनों कंडीशन को अलग-अलग ऑब्जेक्ट में रखकर लागू करता है- MongoDB ऐरे फ़ील्ड पर क्वेरी में प्रत्येक कंडीशन अलग-अलग ऐरे एलिमेंट पर मैच कर सकती है
एक ही एलिमेंट पर दोनों कंडीशन के लिए: $elemMatch
db.twoSpecificIdsDemo.find({
PlayerDetails: {
$elemMatch: {id: {$in: [102, 103]}}
}
})
// यह अलग है: एक ही एलिमेंट में 102 या 103 हो