用$ push的findOne创建重复的对象

时间:2019-04-16 21:22:08

标签: mongodb express mongoose

我想更新具有对象数组的集合中的对象。问题是我的代码在数组中创建了重复的对象。

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

1 个答案:

答案 0 :(得分:1)

您可以尝试使用$addToSet而不是$push

$ addToSet -仅添加唯一的项目,但不保证项目的顺序。

$ push -您可以多次添加相同的项目。