समस्या तब शुरू होती है जब आप अपना Update
बनाने का प्रयास कर रहे होते हैं बयान। जैसा कि आप शायद जानते हैं -1
एक सूचकांक के रूप में पारित किया जाएगा अनुवादित
$ पोजिशनल ऑपरेटर
को . दस्तावेज़ीकरण
कहते हैं कि
इसके अतिरिक्त आप SingleOrDefault
. का उपयोग करके अपनी फ़िल्टरिंग स्थिति बनाने का प्रयास कर रहे हैं और .NET MongoDB ड्राइवर किसी भी MongoDB क्वेरी सिंटैक्स ऑपरेटर में अनुवाद करने में सक्षम नहीं है।
इसे कैसे ठीक करें?
पोजिशनल ऑपरेटर का उपयोग करने के बजाय आप पोजिशनल फ़िल्टर्ड ऑपरेटर का उपयोग करने का प्रयास कर सकते हैं वाक्य रचना।
var filter = Builders<NodeBoardModel>.Filter.Eq(f => f.Id, sId);
var update = Builders<NodeBoardModel>.Update.Set("RemoteBoard.apps.$[app].objects.$[object].config_docs.$[configdoc].config_dt", dtUpdated);
var arrayFilters = new List<ArrayFilterDefinition>();
ArrayFilterDefinition<BsonDocument> appFilter = new BsonDocument("app.appname", new BsonDocument("$eq", sAppName));
ArrayFilterDefinition<BsonDocument> objectFilter = new BsonDocument("object.name", new BsonDocument("$eq", sModelName));
ArrayFilterDefinition<BsonDocument> configDocFilter = new BsonDocument("configdoc.config_id", new BsonDocument("$eq", iObjectId));
arrayFilters.AddRange(new[] { appFilter, objectFilter, configDocFilter });
var updateOptions = new UpdateOptions { ArrayFilters = arrayFilters };
var res = Col.UpdateOne(filter, update, updateOptions);