我想更新具有对象数组的集合中的对象。问题是我的代码在数组中创建了重复的对象。
exports.add_collection = (req, res) => {
let coll = {collName: req.body.collName, collApps: []}
console.log(coll)
User.updateOne({_id: req.userId}, { $push: {collections: coll} },
//seems like $push pushes twice?!
(err) => {
if(err){
console.log("Error: ", err)
}
})
.then(result => {
res.status(200).json({
message: "collection added",
collection: coll
})
})
}
在MongoDB中,我有类似的东西
//some elements of the documents
"collections": [
{
"_id": {
"$oid": "5c8ed..."
},
"collName": "Social Media",
"collApps": []
},
{
"_id": {
"$oid": "5c8ed..."
},
"collName": "Social Media",
"collApps": []
},
//other elements of the documents
答案 0 :(得分:1)
您可以尝试使用$addToSet
而不是$push
。
$ addToSet -仅添加唯一的项目,但不保证项目的顺序。
$ push -您可以多次添加相同的项目。