如何在mongodb中向数组顶部添加值?

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)


Til*_*ilo 2

“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修改它,然后再次存储它(但这不是原子的)