我在mongoDB中有一个集合,我需要更新他的值。 一个元素包含一个object_properties列表,我需要更新sync_with_BOEM_filed_id匹配的所有object_properties的值。
我有此代码:
FilterDefinition<object> filter =
Builders<object>.Filter.ElemMatch(x => x.Properties,
Builders<object>.Filter.Eq(r => r.SyncWithBOEMFieldId, kvp.Key));
其中kvp.Key包含sync_with_BOEM_filed_id
值。
在这种情况下,我具有应更新的三个属性(2,3,4),但始终仅第一个属性被更新。
UpdateDefinition<object> update=
Builders<object>.Update.Set("object_properties.$.value",
kvp.Value.Item2);
bulkCommands2.Add(new UpdateManyModel<object>(filter,update));
await m_TenantMongoClient.MongoDbDatabase.GetCollection<BlueDolphinObjectItem>("objects")
.BulkWriteAsync(MyBulkCommands2);
我错过了一些东西,为什么它不更新所有元素?筛选器从数据库中查找所有元素,但仅更新其object_properties
列表中的第一个匹配项。
任何建议表示赞赏!