Ваш код выглядит нормально.Я написал это много раз, и это работает, как ожидалось.Это может быть простой человеческой ошибкой в любом имени поля (как у вас выше, Комментарии -> Комментарии).
Я предлагаю сыграть в mongodb shell , чтобы выяснить точную проблему.
Прежде всего вставьте тестовый документ:
{
"Comments": [
{
"DownVoters": [],
"Score": 2,
"UpVoters": [],
"_id": 1
},
{
"_id": 2,
"Score": 2,
"UpVoters": [],
"DownVoters": []
}
],
"_id": 1
}
Также я перевел ваш запрос c # в собственный синтаксис mongodb, чтобы вы могли использовать его в оболочке mongodb update .
Ваш запрос:
{"Comments._id": 1, "Comments.DownVoters" : { "$nin" : ["andrew"]},
"Comments.UpVoters" : { "$nin" : ["andrew"]} }
Ваше обновление:
{"$push" : { "Comments.$.UpVoters": "andrew" },
"$inc" : {"Comments.$.Score": 1} }
Попробуйте и вернитесь к нам с ответом, что было проблемой.