从我读过的文档中你可以这样做:
db.people.update( { name:"Joe" }, { $set: { n : 1 } } );
(http://www.mongodb.org/display/DOCS/Updating)
现在我想将它设置为一个动态值,如计数器或表达式:
var i = 0;
db.people.update( { name:"Joe" }, { $set: { n : $i++ } } );
db.people.update( { name:"Joe" }, { $set: { n : ${new Date()} } } );
这可能吗?
我也会接受任何不需要修改和保存完整文档的解决方案。
答案 0 :(得分:1)
mongo是一个支持mongodb的扩展javascript shell,所以你可以用普通的javascript做任何事情:
var i = 0;
db.people.update( { name:"Joe" }, { $set: { n : i++ } } );
和
db.people.update( { name:"Joe" }, { $set: { n : new Date() } } );
<强>更新强>
啊,所以..这不会起作用。你必须不经意地更新每个文件!在将该查询传递给数据库之前执行JS。你有效地做了以下事情:
db.foo.update( {}, { $set: { n : 0 } }, false, true ); # i was zero here
i++;
正如我所说的,你必须单独更新每个文档,但是你可以使用db.eval( )
在服务器端执行整个操作以加快处理速度;)