我可以将MongoDB值设置为javascript表达式吗?

时间:2011-09-08 16:34:45

标签: mongodb

从我读过的文档中你可以这样做:

 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()} } } );

这可能吗?

我也会接受任何不需要修改和保存完整文档的解决方案。

1 个答案:

答案 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( )在服务器端执行整个操作以加快处理速度;)