【发布时间】:2018-07-02 14:32:29
【问题描述】:
我想根据 doc _id 和元素 _id 在数组中插入一个元素。目前,它仅在元素已在数组中就绪时才有效(更新有效,插入无效)。
所以,这些集合:
[{
"_id": "5a65fcf363e2a32531ed9f9b",
"ressources": [
{
"_id": "5a65fd0363e2a32531ed9f9c"
}
]
}]
收到此请求:
query = { _id: '5a65fcf363e2a32531ed9f9b', 'ressources._id': '5a65fd0363e2a32531ed9f9c' };
update = { '$set': { 'ressources.$': { '_id': '5a65fd0363e2a32531ed9f9c', qt: '153', unit: 'kg' } } };
options = {upsert:true};
collection.update(query,update,options);
会给出这个好的结果:
[{
"_id": "5a65fcf363e2a32531ed9f9b",
"ressources": [
{
"_id": "5a65fd0363e2a32531ed9f9c",
"qt": 153,
"unit": "kg"
}
]
}]
如何使相同的请求与这些初始集合一起工作:
[{
"_id": "5a65fcf363e2a32531ed9f9b"
}]
或
[{
"_id": "5a65fcf363e2a32531ed9f9b",
"ressources": []
}]
如何使 upsert 工作? upsert 是否仅适用于整个文档? 目前,我面临这个错误:
位置运算符没有从查询中找到所需的匹配项。
谢谢
【问题讨论】:
-
不可能。解决方法here
标签: arrays mongodb mongodb-query