Javascript 如何在mongodb中从数组中查找数据
我有这样的收藏:Javascript 如何在mongodb中从数组中查找数据,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我有这样的收藏: { "name":"silver", mywants:[ {"_id":objid(545454ddfdf5),mark:{"english":100,"math":100,"science":100}}, {"_id":objid(5878784dfd5d),mark:{"english":100,"math":100,"science":100}}, {"_id":objid(5454dfd44545),mark:{"english"
{
"name":"silver",
mywants:[
{"_id":objid(545454ddfdf5),mark:{"english":100,"math":100,"science":100}},
{"_id":objid(5878784dfd5d),mark:{"english":100,"math":100,"science":100}},
{"_id":objid(5454dfd44545),mark:{"english":100,"math":100,"science":100}},
{"_id":objid(541dfee88245),mark:{"english":100,"math":100,"science":100}},
]
}
我想知道给定的objid是否存在于mywants数组中。然后,如果存在那个对象,我想要那个存在对象id文档到我的回调函数中,所以我试着这样做
collection.find("{"name":"silver"},{"mywants._id":objid}).toArray(function(err,res)
{
console.log(JSON.stringify(res));
})
But, I got output like
[{"Mywant":[{"_id":"5128b9bc046802720b000003"},
{"_id":"5128c190046802720b000004"},
{"_id":"5128c359175e1aa80b000001"}],"_id":"5128b71455e4e0540b000002"}
]
{"_id":objid(545454ddfdf5),mark:{"english":100,"math":100,"science":100}}`,
但是我想要这样
collection.find("{"name":"silver"},{"mywants._id":objid}).toArray(function(err,res)
{
console.log(JSON.stringify(res));
})
But, I got output like
[{"Mywant":[{"_id":"5128b9bc046802720b000003"},
{"_id":"5128c190046802720b000004"},
{"_id":"5128c359175e1aa80b000001"}],"_id":"5128b71455e4e0540b000002"}
]
{"_id":objid(545454ddfdf5),mark:{"english":100,"math":100,"science":100}}`,
如何查找?您必须打电话
collection.find({"name":"silver", "mywants._id":objid}).toArray(…)
而不是
collection.find({"name":"silver"},{"mywants._id":objid}).toArray(…)
。前者表示一个带有两个表达式(“name”:“silver”和“mywants.\u id”:objid)的查询,而后者是一个表达式(“name”:“silver”)和一个投影(“mywants.\u id”:objid)[控制要返回的字段]。更多信息,请访问。您的代码中有输入错误,您想要什么还不清楚。基于您的打字样本和您想要的输出(同样是打字),我假设这就是您的意思: -您正在查找名称:“silver”和“want back mywants.”id字段(有拼写错误)的语法 相反,我想你是想找到: 姓名:“silver”和“mywants.\u id”:SomeSpecific id 并输出相应的mywants条目:
db.collection.find({"name":"silver","mywants._id":objid}, {"mywants.$":1, _id:0}).pretty()
如果我像上面那样使用,我会得到以下错误SyntaxError:意外标记{我编辑了我的答案并省略了内部大括号,请检查它现在是否工作。