我的文档结构如下:
{_id: 1, country: 'USA', names: [{language: 'en', name: 'New York', state:'new'}, {language: 'es', name: 'Nueva York', state:'translated'}]}
{_id: 2, country: 'France', names: [{language: 'en', name: 'Paris', state:'new'}, {language: 'it', name: 'Parigi', state:'translated'}]}
...
Run Code Online (Sandbox Code Playgroud)
我想更新特定语言的项目状态,如果该语言不存在,则添加相应的嵌入文档。例如,我想更新要设置的项目 1 state='new',language='es'因为该语言存在:
{_id: 1, country: 'USA', names: [{language: 'en', name: 'New York', state:'new'}, {language: 'es', name: 'Nueva York', state:'translated'}]}
Run Code Online (Sandbox Code Playgroud)
我想将嵌入的文档添加到第 2 项state='new',language='fr'因为它不存在:
{_id: 2, country: 'France', names: [{language: 'en', name: 'Paris', state:'new'}, {language: 'it', name: 'Parigi', state:'translated'}, {language: 'fr', name: 'Paris', state:'new'}]}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
谢谢。
您需要使用 $ 位置运算符。有关更多信息,请参阅http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator。
在你的情况下它将是
db.cities.update({'_id':1,'names.language':'es'},{$set:{'names.$.state':'new'}});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2366 次 |
| 最近记录: |