根据动态密钥搜索集合中的项目

时间:2017-06-08 11:55:48

标签: node.js mongodb nodes

我是NoSQL数据库的新手,我想找到一种基于密钥搜索阵列中所有项目的方法,例如: 如果我们有这个集合 database.collection(" COL&#34)

{
    "_id" : ObjectId("59389f763007e086bc310c73"),
    "messageIds" : [ 
        1, 
        2, 
        3, 
        4, 
        5
    ],
    "participants" : {
        "59389e953007e086bc310c36" : 0,
        "59389ea63007e086bc310c41" : 0
    },
    "type" : "f"
}

如何找到所有参与者的文件" 59389e953007e086bc310c36"在node.js?

在MongoDb中,我可以找到所有项目,但

db.getCollection('conversations').find(
    {
        "participants.59389e953007e086bc310c36" : 
            {
                $exists: true
            }
    })

我不能在Node.js中这样做,因为它不会按值

评估user_oid
user_oid = "participants."+user_oid;
    let criteria = {
        user_oid: { $exists: true }
    }

    console.log(criteria);
    database.collection(CONVERSATION_COLLECTION).find(criteria, (err,doc) => {
        console.log(doc);
        console.log;

    })

1 个答案:

答案 0 :(得分:0)

您可以使用[]动态设置字段

let criteria = {};
criteria['participants.'+user_oid] = { $exists: true };

console.log(criteria);
database.collection(CONVERSATION_COLLECTION).find(criteria, (err,doc) => {
    console.log(doc);
    console.log;
});