1
Я пытаюсь выполнить массовую операцию обновления с помощью Official Mongo c# 2.0 driver
с помощью следующего кода:MongoDb C# драйвер Ошибка обновления 2,0 насыпной
var query =
Builders<Profile>.Filter.In(p => p.userId, listBounce.Values.ToList()) &
Builders<Profile>.Filter.In(p => p.ID, listBounce.Keys.Select(x=> new ObjectId(x)).
ToList());
var update = Builders<Profile>.Update.Set(p => p.MailLists[-1].Status, (int)wrongEmailStatusAssetId);
dbCollection.UpdateManyAsync(query, update).Wait();
Но есть следующая ошибка была произошла
{"A write operation resulted in an error.\r\n
The positional operator did not find the match needed from the query.
Unexpanded update: p2l.$.status"}
мне нужно обновить свойства каждого элемента в массиве, который соответствует запросу. Структура документов:
{
"_id" : ObjectId("55eeb5da965bb036984110b9"),
"created" : ISODate("2015-09-08T10:17:59.784Z"),
"userId" : 13929,
"email" : "[email protected]",
"firstName" : "Skrillex",
"lastName" : "Skrillex",
"phoneNumber" : "",
"isUnsubscribed" : false,
"isAboveLimit" : false,
"status" : 0,
"userAgent" : 9760,
"isDeleted" : false,
"p2l" : [
{
"listId" : 45165,
"status" : 131,
"subscriptionDate" : ISODate("2015-09-04T06:24:55.763Z")
}
]
}
Еще одно стадное чрезмерное использование лямбда-операций. Не могли бы вы попытаться показать фактический документ, который вы ожидаете. Основная проблема заключается в том, что ваша часть запроса никогда не пытается «сопоставить» элемент массива, чем может быть передана позиционному '' 'оператору в рамках« обновления », как это реализовано. Отмечая, что это «ясно, как грязь» от всего ненужного лямбда-мусора здесь. Кто-то из MSDN должен быть расстрелян. –
'db.profiles.update ( {" userId ": {" $ in ": [13929]}," _id ": {" $ in ": [ObjectId (" 55eeb5da965bb036984110b9 ")]}}, {$ set : {"p2l. $. status": 131}} ) 'Почему этот код не работает? –