0 a = b 部分是我想不通的。我-6ren">
gpt4 book ai didi

mongodb - 如何在 Mongo 中获取 "(WHERE) column = column"?

转载 作者:可可西里 更新时间:2023-11-01 10:07:29 26 4
gpt4 key购买 nike

我喜欢 Mongo 做简单的事情,所以我希望用它来做更高级的事情。在我需要这个之前,它工作得很好:

UPDATE tbl SET a = b WHERE c <> 0

a = b 部分是我想不通的。我试过 mongodb.org,但在那里找不到。我也找过 WHERE a = b 但我也找不到。

另一种方法是获取所有行然后单独更新它们,但我不喜欢那样。它必须更简单。

谢谢。

最佳答案

您想检查文档以进行更新。
http://www.mongodb.org/display/DOCS/Updating

您的代码可能如下所示:
db.tbl.update({ c:{$ne:0}}, { $set: { a : b } });

如果您需要复习高级查询(例如使用 $ne),请查看此处:
http://www.mongodb.org/display/DOCS/Advanced+Queries

编辑:
显然,您无法使用同一文档中的数据进行更新。
MongoDB: Updating documents using data from the same document

编辑 2(使用 map reduce 的解决方案):

var c = new Mongo();
var db = c.getDB('db')
var s = db.getCollection('s')
s.drop();
s.save({z:1,q:5});
s.save({z:11,q:55});

db.runCommand({
mapreduce:'s',
map:function(){
var i = this._id; //we will emit with a unique key. _id in this case
this._id=undefined; //strange things happen with merge if you leave the id in
//update your document with access to all fields!
this.z=this.q;

emit(i,this);
},
query:{z:1}, //apply to only certain documents
out:{merge:'s'} //results get merged (overwrite themselves in collection)
});

//now take a look
s.find();

关于mongodb - 如何在 Mongo 中获取 "(WHERE) column = column"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8230677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com