如何:从javascript应用程序为字段动态生成mongoDB查询字符串

如何:从javascript应用程序为字段动态生成mongoDB查询字符串,javascript,node.js,mongodb,field,Javascript,Node.js,Mongodb,Field,我有一个带有MongoDB的Node.js应用程序 我的客户集合架构如下所示: { '_id' : 1234341264876876143 , 'profile':{ 'name': 'bob', 'email': 'bob@example.com', 'DOB': '13th April 1976' } } 我只想从我的节点应用程序中查找特定客户的配置文件.email字段 var field_name = "em

我有一个带有MongoDB的Node.js应用程序
我的客户集合架构如下所示:

{
    '_id' : 1234341264876876143 , 
    'profile':{
        'name':  'bob',
        'email': 'bob@example.com',
        'DOB':   '13th April 1976'
    }
}
我只想从我的节点应用程序中查找特定客户的配置文件.email字段

var field_name = "email";   // field_name selected programmatically from an array
db.collection('customers').find(
    {'_id':8965698756579084} , 
    {'profile.' + field_name :true}    // expecting it to become 'profile.email' 
)
但是,它给出了以下错误:

    {'profile.' + field_name :true}
                ^
SyntaxError: Unexpected token +
    at Module._compile (module.js:437:25)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)

如何为我要检索的特定字段动态生成字符串?

将投影组件作为一个单独的步骤构造:

var projection = {};
projection['profile.' + field_name] = true;
db.collection('customers').find( {'_id':8965698756579084}, projection );

不能在快捷方式对象/属性创建语法中构建JavaScript中的字符串。您需要提前构造字符串:
var profileFieldName='profile.'+field\u name这也不行@wiredparie-请参阅Tad的答案了解需要如何完成。如果您在key name中输入变量名X,它将假定您希望将key命名为X。@AsyaKamsky-当然…,JS.yup有几个地方不对劲。。。。JS确实有一些恼人的行为