Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在mongodb中从数组中查找数据_Javascript_Node.js_Mongodb - Fatal编程技术网

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:意外标记{我编辑了我的答案并省略了内部大括号,请检查它现在是否工作。