我有这个系列:
{
username : "user1",
arr : [
{
name : "test1",
times : 0
},
{
name : "test2",
times : 5
}
]
}
我有一个带有某个对象的数组。此对象具有名称和值时间。现在我想添加新对象,如果我的数组不包含它们。例如:
我有两个名为" test1"和" test2"已经在集合中。我现在想要插入对象" test2"," test3"和" test4"。它应该只添加对象" test3"和" test4"到数组而不是" test2"再次。在这种情况下,值时间不做任何事情,它们在插入时应该只有值0。
有没有办法用一个查询来做到这一点?
答案 0 :(得分:6)
如果您可以逐个插入var express = require('express')
var router = express.Router();
router.get('/addUserToDB',function(req,res){
firstname = req.query.firstname;
console.log(firstname)
})
module.exports = router;
,test1
,......那么您可以执行此类操作。
test2
如果db.collection.update(
{username : "user1", 'arr.name': {$ne: 'test2'}},
{$push: {
arr: {'name': 'test2', 'times': 0}
}
})
中已存在该名称,$ne
条件将阻止更新。
答案 1 :(得分:0)
现在可以使用专为此构建的addToSet运算符:如果数组不存在,则向数组添加值。
文档:https://docs.mongodb.com/manual/reference/operator/update/addToSet/