Nodejs find() MongoDB, 如何接受变量作为field 来控制返回哪些列的数据?

object和attribute 都是作为函数参数传递进来的
object = ‘Port 0’
attribute= ‘Utilization(%)'
如果我用下面的语句来query MongoDB,可以得到想要的结果
collection.find({"Object Name":object.toString()}, {"Utilization (%)":1, "Poll Time":1, "_id":0}).sort({"Poll Time":1}).toArray(function(err, docs) { ... }
结果返回的是“Object name" 等于 ’Port0 0’ 的文档里的‘Utilization (%)' 和 ’Poll Time' 这两行列

但是如果我想用attribute来代替hardcode 的”Utilization (%)“, 结果就无法返回”Utilization (%)"这一行,语句如下
collection.find({"Object Name":object.toString()}, {**attribute**:1, "Poll Time":1, "_id":0}).sort({"Poll Time":1}).toArray(function(err, docs) { ... }

不明白如果我想用变量来作为find() 里第二个{}的值,应该怎么用?现在给我的感觉是程序认为我想返回key是‘attribute'这一列的数据,而没有认为attribute是一个变量。
是我用的find()方式不对还是有特殊的写法?
如果想返回变量值(函数参数)指定的列,到底应该怎么做?希望不吝赐教。

2个回答

当用变量的使用,用[]来组织访问

 var name = req.params.name;
var value = req.params.value;
var query = {};
query[name] = value;
collection.findOne(query, function (err, item) { ... });

多谢,我也这样解决了。

var query = {};
query["Poll Time"] = 1;
query[attribute] = 1;
query["_id"] = 0;

collection.find({"Object Name":object.toString()}, query).sort({"Poll Time":1}).toArray(function(err, docs) { ... }

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问