2016-01-21 2 views
-1

У меня есть проблема с обновлением (заменой) документов в MongoDb, я уже могу обновлять документы, но я не могу обновлять поддокументы.Пакетное обновление в mongodb C# драйвер

содержание Документ:

{ 
    "_id" : 1, 
    "Code" : LUUID("00000000-0000-0000-0000-000000000000"), 
    "Zip" : 123456, 
    "Text" : "sample01", 
    "Tags" : { 
     "_id" : 1, 
     "Tag" : "tag1" 
    } 
} 
{ 
    "_id" : 2, 
    "Code" : LUUID("00000000-0000-0000-0000-000000000000"), 
    "Zip" : 9.87654e+008, 
    "Text" : "sample02", 
    "Tags" : { 
     "_id" : 1, 
     "Tag" : "tag1" 
    } 
} 
{ 
    "_id" : 3, 
    "Code" : LUUID("00000000-0000-0000-0000-000000000000"), 
    "Zip" : 134679, 
    "Text" : "sample03", 
    "Tags" : { 
     "_id" : 1, 
     "Tag" : "tag1" 
    } 
} 

Я хочу обновить Tags из 1-го и 2-го документа (где "_id" составляет 1 или 2). Я попытался это:

var tags = new PostTag { Id = 8, Tag = "tag8" };   
var filter = Builders<Post>.Filter.In(x => x.Id, new List<int> { 1, 2 }); 
var update = Builders<Post>.Update.Set(z => z.Tags, tags); 
collection.UpdateManyAsync(filter, update); 

Но обновление не удалось.

+1

и исключение ... ??? я не понимаю, почему в C# вы используете Id вместо _id внутри PostTag – ymz

+1

Пожалуйста, начните с чтения [ask] и укажите точную причину сбоя обновления. – CodeCaster

+0

Ваш код выглядит правильно для меня. Каковы значения в 'UpdateResult', в частности,' MatchedCount' и 'ModifiedCount'? – Peter

ответ

0

Все строки кода правильно вместо того, чтобы эта строка:

collection.UpdateManyAsync(filter, update); 

Если вы не называйте это, как ожидают, в состоянии!
Чтобы сделать себя ждать, способного использовать это:

collection.UpdateManyAsync(filter, update).Wait();