我查看了其他帖子,似乎没有人解决我想要做的事情。我需要创建一个查询,搜索在数组中具有type_ids的所有记录,并且属于当前登录用户。这就是我所拥有的:
查询:
app.post('/photos', function(req, res) {
Photos
.find({
'type_id': { $in: req.body.type_ids },
$and : {'groups.users': { $in: req.user._id }}
})
.select('name size')
.exec(function(err, data) {
return res.json(data);
});
});
架构:
var photoSchema = mongoose.Schema({
name : String,
size : String,
type_id : String,
created : {
type: Date,
default: Date.now
},
groups : {
users : [],
other : []
}
});
我唯一可以工作的是以下查询:
app.post('/photos', function(req, res) {
Photos
.find({'type_id': { $in: req.body.type_ids }})
.select('name size')
.exec(function(err, data) {
return res.json(data);
});
});
但是,显然这不会起作用,因为我只希望特定用户获得这些结果。行$and : {'groups.users': { $in: req.user._id }}
显然不起作用,但我不确定如何修复它。有什么想法吗?
答案 0 :(得分:1)
"和"运算符隐含在查询中,因此很少需要$and
。你可以使用:
{
'type_id': { $in: req.body.type_ids },
'groups.users': { $in: req.user._id }
}
虽然根据变量的名称,第二行听起来不对 - 你可能只想要'groups.users': req.user._id
(你应该放弃$in
)。
最后,使用$and
的方法是给它一个数组:
{
'$and': [
{ 'type_id': { $in: req.body.type_ids } },
{ 'groups.users': { $in: req.user._id } }
]
}
但就像我说的那样,这里没必要。