我想在遍历集合时获取字段的值,如果该字段等于“ true”,则使用updateOne和$ set创建另一个字段。我正在使用此代码进行循环:
var userCollection = db.getCollection('users');
var bulkOp = userCollection.initializeOrderedBulkOp();
var count = 0;
userCollection.find().forEach(function (doc) {
bulkOp.find(doc).updateOne({
'$set': {
'gender': "male"
}
});
count++;
if (count % 100 === 0) {
bulkOp.execute();
bulkOp = userCollection.initializeOrderedBulkOp();
}
});
if (count > 0) {
bulkOp.execute();
}
我的收藏集看起来像这样:
[{
name: "Roy",
age: 30,
is_male: true,
is_female: false
},{名称:“ Lena”,年龄:29岁is_male:错误,is_female:是}]
现在,我想声明一个条件,如果doc.is_male = false,则不设置性别:“ female”。请帮忙,谢谢。
您应该能够通过更新来做到这一点。
db.collection.update(query,condition)
在这种情况下:
db.collection.update({"is_male":false},{$set:{"gender":"female"}})
请原谅我有任何错别字,但是请告诉我这是否对您不起作用,或者是否有我在寻找的条件。 (mongo会做魔术的:))