Yig*_*Can 5 database mongodb node.js
我有 db 喜欢;
{"_id" : 1 , children: ["2", "123", "5"]}
Run Code Online (Sandbox Code Playgroud)
我想在子数组中插入一个元素。当您知道索引时,这很容易。$position 可用于此目的。喜欢;
db.module_menu.update({"_id" : "1"} ,
{$push : {"children" : {
$each : ["12"] , $position : 1}}});
Run Code Online (Sandbox Code Playgroud)
但是可以说我不知道位置索引,我知道要插入的元素的值。
我有value: 12我想要插入的价值。insertAfter: 2
结果应该是;
{"_id" : 1, text: "" , children: ["2","12", "123", "5"]}
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
遍历 children 数组中的每个元素,找到值的索引,并使用 $position 插入值。这是唯一的方法吗?
恐怕这是不可能的。$function在更新中使用一个古老的问题,但唯一的方法是读取、修改和保留数组。
另一方面,如果您有一组嵌入文档,则可以使用$位置运算符。可以$用于$set简单数组中的值,但可以用于$push.
> db.test.find()
{ "_id" : ObjectId("56d9570d09e01f20e254d0f3"), "a" : [ 1, 2, 3 ] }
> db.test.update({"_id": ObjectId("56d9570d09e01f20e254d0f3"), "a": 2},
{$push: {a: {$each: [2], $position: "$"}}})
WriteResult({
"nMatched" : 0,
"nUpserted" : 0,
"nModified" : 0,
"writeError" : {
"code" : 2,
"errmsg" : "The value for $position must be a positive numeric value not a String"
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
591 次 |
| 最近记录: |