Wil*_*voy 80 mongodb node.js express
我在mongodb中有这些数据:
{
"name": "Amey",
"country": "India",
"region": "Dhule,Maharashtra"
}
Run Code Online (Sandbox Code Playgroud)
我希望在将字段名称作为查询中的变量传递时检索数据.
以下不起作用:
var name = req.params.name;
var value = req.params.value;
collection.findOne({name: value}, function(err, item) {
res.send(item);
});
Run Code Online (Sandbox Code Playgroud)
如何查询mongodb保持字段名称及其值动态?
max*_*dec 126
您需要动态设置查询对象的键:
var name = req.params.name;
var value = req.params.value;
var query = {};
query[name] = value;
collection.findOne(query, function (err, item) { ... });
Run Code Online (Sandbox Code Playgroud)
执行此操作时{name: value},键是字符串,'name'而不是变量的值name.
Kiw*_*Lau 53
把变量放在[]中
var name=req.params.name;
var value = req.params.value;
collection.findOne({[name]:value}, function(err, item) {
res.send(item);
});
Run Code Online (Sandbox Code Playgroud)
我想澄清一下,如果您要尝试仅查询一个嵌套字段(而不是其值),例如要从此文档中查询字段“名称”:
{
loc: [0, 3],
unit: {
name : "playername"
}
}
Run Code Online (Sandbox Code Playgroud)
这将工作(如我的情况-使用更新):
mdb.cords.updateOne(
{_id: ObjectID(someid)},
{$set: {[query]: newValue}},
function (err, result) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
只需将[query]括号括起来就可以告诉mongodb,它不是文字,而是路径。
小智 5
如果对象是嵌套的,请像这样使用。
直接宾语:-
var name=req.params.name;
var value = req.params.value;
collection.findOne({[name]:value}, function(err, item) {
res.send(item);
});
Run Code Online (Sandbox Code Playgroud)
嵌套对象:-
var surname=req.params.surname;
var value = req.params.value;
var condition = `name.${surname}`
collection.findOne({[condition]:value}, function(err, item) {
res.send(item);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46939 次 |
| 最近记录: |