如何replaceMongoDB中的项目

我通过API请求具有唯一ID的JSON对象。 其中一些项目已经存在于我的MongoDB数据库中。 有没有这样的function:

Collection.replace({ id: '12345' }, JSON_object) 

它首先查找带有id字段的对象,然后用新对象replace它(如果find),或者如果找不到匹配的对象,则将新对象添加到集合中?

我正在使用mongoose在node.js中执行此操作。 不幸的是,ObjectId的实现似乎有错误,所以我正在寻找一个通用的方法。

MongoDb核心function更新upsert选项:

 db.collection.update( criteria, objNew, upsert, multi ) 

如果没有文档匹配条件 ,将插入objNew 。 尝试:

 db.collection.update( { _id: ObjectID('423523452') }, JSON_object, true ) 

http://www.mongodb.org/display/DOCS/Updating#Updating-update%28%29

请记住,您必须使用db.bson_serializer.ObjectID函数才能获得mongodb标识符。

 var ObjectID = db.bson_serializer.ObjectID; db.collection.update({_id: ObjectID('423523452')}, {foo: 'bar'}, true)