MongoDB में सरणी का सटीक मिलान (क्रम और मान दोनों) करने के लिए $eq ऑपरेटर का उपयोग करें। यह $elemMatch का विकल्प है।
उदाहरण
विभिन्न सरणी वाले दस्तावेज़ बनाएं:
> db.equalDemo.insertOne({_id: 1, "StudentFriendNames": ["John", "Carol", "Sam"]});
{ "acknowledged" : true, "insertedId" : 1 }
> db.equalDemo.insertOne({_id: 2, "StudentFriendNames": null});
{ "acknowledged" : true, "insertedId" : 2 }
> db.equalDemo.insertOne({_id: 3, "StudentFriendNames": ["Carol"]});
{ "acknowledged" : true, "insertedId" : 3 }
> db.equalDemo.insertOne({_id: 4, "StudentFriendNames": ["Sam"]});
{ "acknowledged" : true, "insertedId" : 4 }
दस्तावेज़ देखें:
> db.equalDemo.find();
{ "_id" : 1, "StudentFriendNames" : [ "John", "Carol", "Sam" ] }
{ "_id" : 2, "StudentFriendNames" : null }
{ "_id" : 3, "StudentFriendNames" : [ "Carol" ] }
{ "_id" : 4, "StudentFriendNames" : [ "Sam" ] }
सटीक सरणी ["Carol"] वाले दस्तावेज़ ढूंढें
> db.equalDemo.find({"StudentFriendNames": {$eq: ["Carol"]}});
आउटपुट:
{ "_id" : 3, "StudentFriendNames" : [ "Carol" ] }
व्याख्या:
$eq: ["Carol"]- सरणी का सटीक मिलान: ठीक एक तत्व "Carol"- क्रम, लंबाई, और मान सभी समान होने चाहिए
- पहला दस्तावेज़ (["John", "Carol", "Sam"]) मेल नहीं खाता - लंबाई अलग
- Null सरणी मेल नहीं खाती
$eq vs डॉट नोटेशन
| क्वेरी | व्यवहार |
|---|---|
{arr: {$eq: ["a", "b"]}} | सटीक सरणी मिलान: ["a", "b"] क्रम में |
{arr: "a"} | सरणी में "a" मौजूद है (कोई भी स्थिति) |
{arr.0: "a"} | पहला तत्व "a" है |
{arr: {$elemMatch: {$eq: "a"}}} | सरणी में "a" मौजूद है (समान) |
उपयोग: सटीक सरणी मिलान के लिए $eq उपयोगी है। आंशिक मिलान के लिए डॉट नोटेशन या $elemMatch बेहतर है।