Kho*_*hon 6 javascript mongodb nosql
如何在mongodb中向数组顶部添加值?
说我在我的mongo集合中有这个文件:
{ "colors" : [ "red", "green", "blue" ] }
Run Code Online (Sandbox Code Playgroud)
如何在列表的前面添加"黄色"?
当我做:
{$push:{colors:"yellow"}}
Run Code Online (Sandbox Code Playgroud)
我明白了:
{ "colors" : [ "red", "green", "blue", "yellow" ] }
Run Code Online (Sandbox Code Playgroud)
我要这个:
{ "colors" : [ "yellow", "red", "green", "blue"] }
Run Code Online (Sandbox Code Playgroud)
提前致谢!
Tom*_*cer 21
对于任何新手,MongoDB 2.6+支持$position运算符,可用于实现所需的效果.这里的好处是您不需要返回整个文档数组,在本地更新并保存它 - $position操作符意味着可以通过原子方式完成操作.
您需要结合使用它$each:
$push: { colors: { $each: ['yellow'], $position: 0 } }
Run Code Online (Sandbox Code Playgroud)
“unshift”将数据插入数组的前面。而“push”将其插入到数组的末尾。例如在 JavaScript 中:
> a = ['red','green','blue']
[ "red", "green", "blue" ]
> a.unshift("yellow")
4
> a
[ "yellow", "red", "green", "blue" ]
Run Code Online (Sandbox Code Playgroud)
但不幸的是 Mongo API 不支持原子操作:
http://www.mongodb.org/display/DOCS/Updating
它只支持“推送”
你的数组有多大?
你可以假设你的数组在Mongo中总是反向存储,并使用push,或者你可以读出数组,用unshift修改它,然后再次存储它(但这不是原子的)
| 归档时间: |
|
| 查看次数: |
4805 次 |
| 最近记录: |