javascript - 将数组添加到现有的嵌套数组而不重复 mongodb

标签 javascript arrays mongodb

这是我的用户收藏

{ _id: ObjectId("589803bf53860d4a3475afa3"),
  "username": "fadeltd",
  "gender": "Male",
  "updatedAt": ISODate("2017-02-06T05:03:59.969Z"),
  "createdAt": ISODate("2017-02-06T05:03:59.969Z"),
  "shoppingList": [{
      "title": "Personal List",
      "ingredients": ["5 Eggs"]
  }]
})

我想做的是将数据推送到我的购物 list ,使用$addToSet,这样就不会出现重复的购物 list 数据

这是我的脚本

User.update({ 
        _id: ObjectId("589803bf53860d4a3475afa3"), 
        'shoppingList.title': "Personal List"
    }, 
    {
        $addToSet: {
            "shoppingList.$.ingredients": ["5 Eggs", "3 Milks"]
        }
    })

但是当我尝试该脚本时,我得到了这个

{ _id: ObjectId("589803bf53860d4a3475afa3"),
  "username": "fadeltd",
  "gender": "Male",
  "updatedAt": ISODate("2017-02-06T05:03:59.969Z"),
  "createdAt": ISODate("2017-02-06T05:03:59.969Z"),
  "shoppingList": [{
      "title": "Personal List",
      "ingredients": ["5 Eggs", ["5 Eggs", "3 Milks"]],
  }]
})

我希望成分为 ["5 Eggs", "3 Milks"] 而不是嵌套数组 ["5 Eggs", ["5 Eggs", "3 Milks"]]

最佳答案

使用$each 修饰符,允许您向数组添加多个值

User.update(
    { 
        "_id": ObjectId("589803bf53860d4a3475afa3"), 
        "shoppingList.title": "Personal List"
    }, 
    {
        "$addToSet": {
            "shoppingList.$.ingredients": { 
                "$each": ["5 Eggs", "3 Milks"] 
            }
        }
    }
)

关于javascript - 将数组添加到现有的嵌套数组而不重复 mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42062331/

相关文章:

javascript - 如何修复 'Failed to load resource: The operation couldn' 无法完成。 iOS 12 视频中的“协议(protocol)错误”?

c++ - 将 C++ 字节数组转换为 C 字符串

java - 从数组中抓取单词

node.js - 如何从 Mongoose 获取定义的索引

node.js - 在 Node.js 中使用 findAndModify 时出错

php - 从页面后面获取代码

javascript - React.js 中 JSON 输入意外结束

javascript - 如何将链接与 float 在其旁边的图像链接居中

python - 如何根据列将 numpy 数组拆分为 numpy 数组?

MongoDB Compass 在使用 "Insert Document"功能填充数据库时不允许 ObjectId()?