在Mongo中使用$存在dynamic密钥名称和节点的本地驱动程序
我在一个集合中有一个文档,如下所示:
{ container : { P39433: 2, P30213: 4 } }
程序中dynamic生成值“P39433”和“P30213”。 我可以运行下面的查询使用针对mongo的点符号直接和我得到所需的结果
db.collection.findOne({ "container.P00000" : { $exists : false } })
我拿回文件。 即我只想获得该文件,如果该字段不存在。
我的问题是,如何在Node中使用本机驱动程序在值P00000
包含在variables中运行该查询。
我通常的解决scheme是像下面这样构造查询,但不返回结果。
var fieldName = 'P00000'; var dynObj = {}; dynObj[fieldName] = { $exists : false }; db.collection.findOne( { "container" : dynObj });
你很近 尝试这个:
var fieldName = 'P00000'; var dynObj = {}; dynObj["container." + fieldName] = { $exists: false }; db.collection.findOne(dynObj);
更新
现在Node.js 4+支持计算属性名称 ,您可以按照以下步骤创builddynObj
:
var dynObj = { ["container." + fieldName]: { $exists: false } };