Допустит, у меня есть документ, структурированный таким образом:Update данного Монго поле в неизвестных родителях полого
datas: {
foo: {
...
keytoupdate: [...]
},
whatever: {
...
keytoupdate: [...]
},
anystring: {
...
keytoupdate: [...]
},
...: {
...
keytoupdate: [...]
}
}
Я знаю, что:
- Каждого прямой потомок свойство «данных» документ имеет поле «keytoupdate».
- Прямые дочерние свойства документа «datas» варьируются от случая к случаю: не обязательно одно и то же имя, ни одного номера.
Я хочу обновить каждое поле «keytoupdate», независимо от того, сколько из них есть.
Вопрос в следующем: Как я могу это сделать? Есть ли какой-нибудь волшебный оператор, например, $ that does the same job for Array?
Спасибо!
обходной путь будет перепроектировать схему таким образом, что ключи становятся частью значений свойств, так как это довольно сложно выдавать запросы против динамических ключей. Возможно, вы захотите увидеть этот [** SO вопрос **] (http://stackoverflow.com/questions/29745878/mongo-match-where-object-key-is-variable) для получения дополнительной информации о том, как вы можете это – chridam
@chridam К сожалению, я не могу перепроектировать схему, она встроена в очень большую структуру: s –
Это не имеет смысла - если вы не знаете имя ключа выше 'keytoupdate', t знать, в каком поле вам нужно запрашивать/обновлять. В приведенном выше документе нет поля «keytoupdate»; существует только 'key1.keytoupdate',' key2.keytoupdate' и т. д. Можете ли вы сформулировать свой вопрос так, чтобы он был корректным? Какое точное преобразование запроса и/или документа вы хотели бы сделать? – wdberkeley