Node.js 如何在添加到数组之前检查嵌套数组项是否已存在
我正在Mongo中创建一个新的对象id并将其分配给一个嵌套的数组项,这非常有效。我不知道如何对照该对象ID检查它是否已经存在 路线如下:Node.js 如何在添加到数组之前检查嵌套数组项是否已存在,node.js,mongodb,Node.js,Mongodb,我正在Mongo中创建一个新的对象id并将其分配给一个嵌套的数组项,这非常有效。我不知道如何对照该对象ID检查它是否已经存在 路线如下: router.post('/events', function(req,res){ var loggedInUser = req.user.username; var objectId = new ObjectID(); User.update( {"username" : loggedInUser},
router.post('/events', function(req,res){
var loggedInUser = req.user.username;
var objectId = new ObjectID();
User.update(
{"username" : loggedInUser},
{
$push:{
primaryEvents:{
_id: objectId,
name: req.body.name,
date: req.body.date,
description: req.body.description
}
}
},
{upsert:true},
function(err){
console.log('made it to the calback');
if(err)
res.send(err);
res.render('index', {
user: req.user,
primaryEvents: req.user.primaryEvents
});
}
);
});
要使用不等式运算符检查数组中是否没有值:
User.update(
{
"username" : loggedInUser,
"primaryEvents._id": { "$ne": objectid }
},
{
$push:{
primaryEvents:{
_id: objectId,
name: req.body.name,
date: req.body.date,
description: req.body.description
}
}
},
{upsert:true},
function(err){
console.log('made it to the calback');
if(err)
res.send(err);
res.render('index', {
user: req.user,
primaryEvents: req.user.primaryEvents
});
}
);
这将检查数组中子文档的所有命名属性,并确保该值不存在
所以“查询”部分就是你控制它的地方。如果您的值已经存在\u id
,则不存在匹配项,因此不会进行更新
否则,如果你不知道
太好了,这正是我需要的。我想我问错问题了,但你的第二个解决方案正是我所需要的。谢谢
User.update(
{
"username" : loggedInUser,
"primaryEvents.name": { "$ne": req.body.name }
},
{
$push:{
primaryEvents:{
_id: objectId,
name: req.body.name,
date: req.body.date,
description: req.body.description
}
}
},
{upsert:true},
function(err){
console.log('made it to the calback');
if(err)
res.send(err);
res.render('index', {
user: req.user,
primaryEvents: req.user.primaryEvents
});
}
);