Обновить коллекцию MongoDB, где поле не существует - PullRequest
0 голосов
/ 21 июня 2019

Я хочу обновить каждую запись в коллекции, которая не содержит определенного поля.

Следующий запрос работает с использованием оболочки Mongo, но я изо всех сил пытаюсь написать это, используя mongoDB.Driver в .Net.

db.Comments.update(
    { MemberRoleType: { $exists: false }},
    { $set: { MemberRoleType: 4 },
    { multi: true }
)

Я пытался использовать различные методы, такие как следующие, но не смог достичь желаемого результата:

await comments.UpdateManyAsync(c => c.MemberRoleType == 0, Builders<Comment>.Update.Set(x => x.MemberRoleType, ContentRoleType.Online)));

1 Ответ

1 голос
/ 21 июня 2019

Я думаю, что вы ищете существует

Builders<Comments>.Filter.Exists(x => x.MemberRoleType, false);

Вы должны быть в состоянии использовать это так

var filter = Builders<Comments>.Filter.Exists(x => x.MemberRoleType, false);
await comments.UpdateManyAsync(filter, Builders<Comment>.Update.Set(x => x.MemberRoleType, ContentRoleType.Online)));

Который в свою очередь генерирует этот запрос

{
        "q": {
            "MemberRoleType": {
                "$exists": false
            }
        },
        "u": {
            "$set": {
                "MemberRoleType": 4
            }
        },
        "multi": true
}
...