मान लें कि आप awaiting
. को खोजना चाहते हैं संग्रह के लिए स्थिति users
db.users.find({"version.files.status":"awaiting"}).pretty()
यह स्वचालित रूप से सरणियों के भीतर खोज करेगा।
हालांकि, अपडेट करना थोड़ा अलग है और आपको arrayFilter<का उपयोग करना चाहिए। /ए> :
db.users.updateOne(
{
"version.files._id": "606592b3c5d509071857f6e8",
},
{
$set: {
"version.$[version].files.$[file].url": "something else",
},
},
{
arrayFilters: [
{ "version._id": "606592b1c5d509071857f6e7" },
{ "file._id": "606592b3c5d509071857f6e8" },
],
}
);
सुनिश्चित करें कि आपके find
. पर एक अनुक्रमणिका है क्वेरी:
उपरोक्त उदाहरण के लिए
db.users.createIndex({"version.files._id":1},{background:true})
कई और उदाहरण Mongo Doc पर उपलब्ध हैं
संपादित करें
आपकी टिप्पणी के अनुसार, यहाँ एक कार्यशील उदाहरण है:
db.users.findOneAndUpdate(
{ "version.files._id": "606592b3c5d509071857f6e8" },
{
$set: {
"version.$[version].files.$[file].url": "Test URL",
"version.$[version].files.$[file].status": "Test status",
},
},
{
returnNewDocument: true,
arrayFilters: [
{ "version._id": "606592b1c5d509071857f6e7" },
{ "file._id": "606592b3c5d509071857f6e8" },
],
}
);