我在mongodb中有以下数据:
{
"name": "Amey",
"country": "India",
"region": "Dhule,Maharashtra"
}
我希望在query中将字段名作为变量传递时检索数据。
以下内容不起作用:
var name = req.params.name;
var value = req.params.value;
collection.findOne({name: value}, function(err, item) {
res.send(item);
});
如何查询mongodb,同时保持字段名和字段值的动态性?
发布于 2013-06-11 16:26:30
需要动态设置查询对象的key:
var name = req.params.name;
var value = req.params.value;
var query = {};
query[name] = value;
collection.findOne(query, function (err, item) { ... });
执行{name: value}
时,关键字是字符串'name'
,而不是变量name
的值。
发布于 2016-09-08 00:23:47
只需将变量放入[]
var name=req.params.name;
var value = req.params.value;
collection.findOne({[name]:value}, function(err, item) {
res.send(item);
});
发布于 2016-09-01 14:47:42
我想澄清的是,如果您只想查询一个嵌套字段(而不是它的值),比如您想要查询这个文档中的字段"name“:
{
loc: [0, 3],
unit: {
name : "playername"
}
}
这将会起作用(和我的例子一样--使用update):
mdb.cords.updateOne(
{_id: ObjectID(someid)},
{$set: {[query]: newValue}},
function (err, result) {
...
}
}
简单地将[query]
括在括号中会告诉mongodb它不是文字,而是一个路径。
https://stackoverflow.com/questions/17039018
复制相似问题