Javascript 如何使用id mongodb在嵌入式文档数组中查找数据?
我使用mongodb和nodejs来查找嵌入文档中的数据。奇怪的是,查询在数据库中工作,但在实际的nodejs代码中却不工作 这是我的数据对象:Javascript 如何使用id mongodb在嵌入式文档数组中查找数据?,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我使用mongodb和nodejs来查找嵌入文档中的数据。奇怪的是,查询在数据库中工作,但在实际的nodejs代码中却不工作 这是我的数据对象: { "_id" : ObjectId("5c65866488a1c53464e46dc7"), "cat_lang" : [ { "_id" : ObjectId("5c65866488a1c53464e46dc8"), "en" : "temp", "it" : "temp" } ],
{
"_id" : ObjectId("5c65866488a1c53464e46dc7"),
"cat_lang" : [
{
"_id" : ObjectId("5c65866488a1c53464e46dc8"),
"en" : "temp",
"it" : "temp"
}
],
"providers" : [
{
"_id" : ObjectId("5c65866488a1c53464e46dc9"),
"provider_name" : "temp0",
"url" : "http://uber.com",
},
{
"_id" : ObjectId("5c65866488a1c53464e46dca"),
"provider_name" : "temp1",
"url" : "http://uber2.com",
}
]}
我在mongodb shell中尝试了这些查询,效果非常好
db.sideservices.findOne({"_id" : ObjectId("5c65866488a1c53464e46dc7")},{providers: {$elemMatch: {"_id" : ObjectId("5c65866488a1c53464e46dca")}}})
及
但是当在nodejs中使用相同的函数时,它会返回整个对象,而不是具有给定id的文档
this.db.collection('sideservices').find({'providers':{'$elemMatch':{'_id':ObjectId('5c65866488a1c53464e46dca')}}}).toArray((err,res) => {...})
你可以这样做
this.collection("sideservices").find({
"providers": { "$elemMatch": { "_id": ObjectId("5c65866488a1c53464e46dca") } }
})
.project({
"providers": { "$elemMatch": { "_id": ObjectId("5c65866488a1c53464e46dca") } }
})
.toArray((err,res) => {...})
您好@Anthony Winzlet如果您看到我的问题,我已经尝试过这种方法,因为某些原因,它不会获取确切的文档,而是获取整个对象。我的意思是从“_id”:ObjectId(“5C6586488A1C53464E46DC7”)到结束。仅获取此Id的单个文档需要什么-->“_Id”:ObjectId(“5C6586488A1C53464E46DCA”)感谢这是另一回事。使用nodejs代码尝试上述答案。然后我会让你知道这个问题谢谢你,你是个救生员!!我花了一整天的时间在这上面,但效果很好
this.collection("sideservices").find({
"providers": { "$elemMatch": { "_id": ObjectId("5c65866488a1c53464e46dca") } }
})
.project({
"providers": { "$elemMatch": { "_id": ObjectId("5c65866488a1c53464e46dca") } }
})
.toArray((err,res) => {...})