我正在尝试查找数组中具有特定元素的对象:
所以我的查询如下:
router.get('/', function(req, res) {
var userSubscribed = req.user.email;
db.posts.find({ "SubscriberList": { $elemMatch: userSubscribed}}, function(err, object){
if (err) console.log(err);
else console.log(object);
res.render('index', { title: 'Home', user: req.user});
})
});
正在排查的错误如下:
{ [MongoError: Can't canonicalize query: BadValue $elemMatch needs an Object] name: 'MongoError'}
我的数据库中的对象示例:
{
"_id" : ObjectId("5490afa8416841105626cc41"),
"post" : {
"title" : "Ralph",
"category" : "Node",
"date" : "2014-12-11",
"description" : "Node coming soon!"
},
"owner" : "bousamra.ralph@gmail.com",
"status" : "active",
"category" : "Node",
"SubscriberList" : ["alaric@hotmail.com" ]
}
最佳答案
一般来说,在匹配单个数组元素的多个属性时,只需要使用$elemMatch
即可。
使用 SubscriberList
只是一个字符串数组,您可以简单地执行以下操作:
router.get('/', function(req, res) {
var userSubscribed = req.user.email;
db.posts.find({ "SubscriberList": userSubscribed }, function(err, object){
if (err) console.log(err);
else console.log(object);
res.render('index', { title: 'Home', user: req.user});
})
});
关于javascript - 如何在mongodb中查找数组中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27517646/