如何向现有集合中的每个文档添加新字段?

我知道如何更新现有文档的字段,但不知道如何向集合中的每个文档添加新字段。在芒果壳里怎么做呢?


当前回答

如果你正在使用猫鼬尝试这个,猫鼬连接后

async ()=> await Mongoose.model("collectionName").updateMany({}, {$set: {newField: value}})

其他回答

如果你正在使用猫鼬尝试这个,猫鼬连接后

async ()=> await Mongoose.model("collectionName").updateMany({}, {$set: {newField: value}})
db.collection.updateMany({}, {$set: {"fieldName": ""}})

updateMany要求每个文档都有一个匹配条件,因为我们传递的是{},它总是true。第二个参数使用$set操作符在每个文档中添加所需的字段。

皮蒙戈 3.9+

Update()现在已弃用,您应该使用replace_one()、update_one()或update_many()来代替。

在我的情况下,我使用update_many(),它解决了我的问题:

db.your_collection.update_many({}, {"$set": {"new_field": "value"}}, upsert=False, array_filters=None)

从MongoDB 3.2版开始,你可以使用updateMany():

> db.yourCollection.updateMany({}, {$set:{"someField": "someValue"}})

上面的答案不包括这种情况。我正在寻找类似的查询,但想根据条件向一些文档添加字段。

因此,我们可以使用updateMany的第一个变量仅更新少数文档中的字段。

示例:我想添加一个可空字段isDeprecated?用户类型为雇主且国家为“AAA”的所有用户。

db.users.updateMany({"userType": "Employer", "country": "AAA"}, {"$set": { "isDeprecated?": true }})  

这个答案在那些我们必须找到集合然后更新的场景中也很有帮助。这可以像前面提到的那样在单个查询中完成。