Nodejs find() MongoDB, 如何接受变量作为field 来控制返回哪些列的数据?
发布于 9 年前 作者 penzha 7481 次浏览 最后一次编辑是 8 年前 来自 问答

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 query2 = {
  'Poll Time': 1,
  _id: 0
};
query2[attribute] = 1;

From Noder

多谢,我也这样解决了。

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) { … }

回到顶部