javascript - 如何在mongodb中查找数组中的元素?

标签 javascript json mongodb

我正在尝试查找数组中具有特定元素的对象:

所以我的查询如下:

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/

相关文章:

php - 在 PHP 中使用 Try-catch 结构

javascript - 如何使用 WebGL 让 2D 形状环绕 Canvas ?

javascript - 在 mongoDB 中获取相邻文档之间的差异

javascript - 如果mongodb中存在相同的key,如何更新数据?

javascript - Observable 的转换

javascript - 观察 let 声明的提升

javascript - JavaScript 中的 JSON 格式问题

javascript - 在另一个函数完成时执行函数,使用 ajaxComplete()?

json - Typescript映射Json到接口(interface)解析日期

python - 如何在 mongoengine 中迭代数据库中的集合?