JS / MongoDB:检查对象中是否存在嵌套字段(集合文档)

时间:2015-11-26 19:27:15

标签: javascript mongodb

我需要检查文档ID和嵌套元素是否存在字段content,该元素也将由id标识。

因此,我按Collection.findOne({ _id: 'dZXr2Pg7Ak4M5aYWF'})提取文件,它给了我这个:

{
    "_id" : "dZXr2Pg7Ak4M5aYWF",
    "points" : [
        {
            "id" : "Gwf5BzorXyYBZSEzK",
            "coordinates" : [
                433,
                215
            ],
            "content" : "anything"
        },
        {
            "id" : "iwSM98W5PD87BtcLa",
            "coordinates" : [
                666,
                186
            ]
        }
    ]
}

不,我需要检查给定content是否有id字段,这意味着:

id = 'Gwf5BzorXyYBZSEzK' -> true
id = 'iwSM98W5PD87BtcLa' -> false

我还尝试通过findOne直接获取此信息:

Collection.findOne({ 
    _id: 'dZXr2Pg7Ak4M5aYWF', 
    points: { 
        id: id, 
        content: { $exists: true } 
    } 
});

但这只给了我undefined

2 个答案:

答案 0 :(得分:1)

Collection.findOne({ _id: 'dZXr2Pg7Ak4M5aYWF', }).points.filter(function (obj) { 
    return obj.id == id; 
})[0]).content ? true : false;

答案 1 :(得分:-2)

一个例子是:

Collection.findOne({_id: 'dZXr2Pg7Ak4M5aYWF'},function(err, doc) {
    if (doc.points.content){
        console.log(true);
    } else {
        console.log(false);
    }
});