MongoDB में नेस्टेड JSON संरचना से मान खोजने के लिए find() के साथ डॉट नोटेशन (.) का उपयोग करें।
उदाहरण
नेस्टेड ऑब्जेक्ट और सरणी वाला दस्तावेज़ बनाएं:
> db.findValueFromJsonDemo.insertOne(
{
"UserDetails": [{
"_id": new ObjectId(),
"UserName": "Carol",
"UserMessage": "Hi"
}],
"UserFriendsName": ["John", "Sam"]
}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cdf8a4cbf3115999ed511fd") }
दस्तावेज़ देखें:
> db.findValueFromJsonDemo.find().pretty();
{ "_id" : ObjectId("5cdf8a4cbf3115999ed511fd"), "UserDetails" : [ { "_id" : ObjectId("5cdf8a4cbf3115999ed511fc"), "UserName" : "Carol", "UserMessage" : "Hi" } ], "UserFriendsName" : [ "John", "Sam" ] }
UserMessage "Hi" वाले दस्तावेज़ ढूंढें
> db.findValueFromJsonDemo.find({'UserDetails.UserMessage': "Hi"});
आउटपुट:
{ "_id" : ObjectId("5cdf8a4cbf3115999ed511fd"), "UserDetails" : [ { "_id" : ObjectId("5cdf8a4cbf3115999ed511fc"), "UserName" : "Carol", "UserMessage" : "Hi" } ], "UserFriendsName" : [ "John", "Sam" ] }
व्याख्या:
UserDetails.UserMessageडॉट नोटेशन नेस्टेड फील्ड तक पहुंचता हैUserDetailsएक सरणी है, लेकिन MongoDB स्वचालित रूप से सरणी के प्रत्येक तत्व मेंUserMessageखोजता है- यदि सरणी के किसी भी तत्व में मेल खाता है, तो पूरा दस्तावेज़ लौटाया जाता है
गहरी नेस्टिंग के लिए:
db.collection.find({"level1.level2.level3.field": "value"})
नोट: यह केवल पढ़ने (find) के लिए काम करता है। अपडेट के लिए पोजिशनल ऑपरेटर $ या arrayFilters की आवश्यकता होती है।