Лучшее, что можно сделать, - это изменить структуру документа.
Сделайте так, чтобы ключ «вещей» указывал на массив MyClass
, и берите то, что вы использовали в качестве ключа, и делайте его ключом имени документов в массиве.
{
"_id": {
"oid": "47f1f704c42f56380ac80000"
},
"Things": [
{
"Name": "abc",
"Color": "blue",
"Shape": "square",
},
{
"Name": "def",
"Color": "red",
"Shape": "circle"
}
]
}
Как только вы настроите документ таким образом, вы можете использовать позиционный оператор для обновления первого MyClass
в массиве Things, который соответствует вашему запросу, например:
db.things.update( { "Things.Color": "blue" }, {$set: {"Things.$.Color": "red"} })
Если вы хотите изменить все соответствующие элементы, о чем вы на самом деле спрашивали, вам, вероятно, нужно выполнить запрос $ where, который перебирает вещи в массиве.