首页 > 解决方案 > 如何翻译我的查询以在 Node.js 中与 mongodb 一起使用

问题描述

这就是我的 mongo 查询的样子

db.test.findOne({"User.David":{$elemMatch:{"action":"todo","status":"Done"}}})

我在 node.js api 中实现这个,用户可以根据用户名和状态检索文档

以下是我尝试过的。

var query = {};
var value = `User.${userName}`;
query[value] = `{$elemMatch:{"action":"todo","status":"${status}"}}`

db.collection(test).findOne(query).then((result)=>{

}

问题是查询看起来像

db.test.findOne({'User.David':'{$elemMatch:{"action":"todo","status":"Done"}}'})

引号在这里是个问题。

标签: javascriptnode.jsmongodbmongoose

解决方案


您不应该在整个查询值表达式周围使用字符串模板,因为这将产生一个字符串。相反,只需像这样构造您的查询:

query[value] = { $elemMatch: { action: "todo", status } }

推荐阅读