Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में सरणी प्रॉपर्टी का केवल पहला आइटम कैसे प्राप्त करें?

MongoDB में सरणी फील्ड से केवल पहला तत्व प्राप्त करने के लिए प्रोजेक्शन में $slice ऑपरेटर का उपयोग 1 के साथ करें।

उदाहरण

नेस्टेड सरणी वाला दस्तावेज़ बनाएं:

> db.gettingFirstItemInArrayDemo.insertOne(
  {
    "UserId": 101,
    "UserName": "Carol",
    "UserOtherDetails": [
      {"UserFriendName": "Sam"},
      {"UserFriendName": "Mike"},
      {"UserFriendName": "David"},
      {"UserFriendName": "Bob"}
    ]
  }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cdfca52bf3115999ed51205") }

दस्तावेज़ देखें:

> db.gettingFirstItemInArrayDemo.find().pretty();
{ "_id" : ObjectId("5cdfca52bf3115999ed51205"), "UserId" : 101, "UserName" : "Carol", "UserOtherDetails" : [ { "UserFriendName" : "Sam" }, { "UserFriendName" : "Mike" }, { "UserFriendName" : "David" }, { "UserFriendName" : "Bob" } ] }

सरणी का केवल पहला तत्व प्राप्त करें

> db.gettingFirstItemInArrayDemo.find({"UserId": 101}, {UserOtherDetails: {$slice: 1}});

आउटपुट:

{ "_id" : ObjectId("5cdfca52bf3115999ed51205"), "UserId" : 101, "UserName" : "Carol", "UserOtherDetails" : [ { "UserFriendName" : "Sam" } ] }

व्याख्या:

  • {$slice: 1} - सरणी के पहले 1 तत्व लौटाता है
  • पूरा दस्तावेज़ लौटता है, लेकिन UserOtherDetails सरणी केवल 1 तत्व तक सीमित
  • अन्य फील्ड (UserId, UserName) अपरिवर्तित रहते हैं

एग्रीगेशन विकल्प (अधिक नियंत्रण)

db.collection.aggregate([
  {$match: {UserId: 101}},
  {$project: {
    UserId: 1,
    UserName: 1,
    FirstFriend: {$arrayElemAt: ["$UserOtherDetails.UserFriendName", 0]}
  }}
])

यह केवल विशिष्ट फील्ड (UserFriendName) का पहला मान निकालता है, पूरा ऑब्जेक्ट नहीं।

$slice त्वरित संदर्भ

मानपरिणाम
1पहला तत्व
-1अंतिम तत्व
[skip, limit]skip के बाद limit तत्व
  1. - MongoDB में $concatArrays का उपयोग करके सरणियों को जोड़ना

    MongoDB एग्रीगेशन में सरणी संयोजन $concatArrays ऑपरेटर एग्रीगेशन पाइपलाइन में दो या दो से अधिक सरणियों को जोड़कर एक नई सरणी बनाता है। यह $project स्टेज के भीतर उपयोग किया जाता है। नमूना डेटा > db.demo14.insertOne({ ListOfStudent: [Carol, Mike, Sam], ListOfTeacher: [Robert, David] }); { a

  1. - MongoDB में सरणी के लिए कैप्ड सब-कलेक्शन और $slice का उपयोग

    MongoDB में सरणी तत्वों को सीमित करना: $slice का उपयोग MongoDB सब-कलेक्शन या नेस्टेड सरणियों पर सीधे capped विकल्प का समर्थन नहीं करता। capped संग्रह स्तर पर काम करता है। हालांकि, आप एग्रीगेशन में $slice ऑपरेटर का उपयोग करके सरणी से केवल पहले N तत्व प्राप्त कर सकते हैं। नमूना डेटा > db.demo319.i

  1. - MongoDB में सरणी में डुप्लिकेट की जांच कैसे करें?

    सरणी में डुप्लिकेट जांचने के लिए MongoDB में aggregate() का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo756.insertOne({SubjectName:[MySQL,MongoDB,Java]}); { acknowledged : true, insertedId : ObjectId(5eb01e0d5637cd592b2a4add) } > db.demo756.insertOne({SubjectName:[MongoDB,MySQL,MongoDB,C,C