【发布时间】:2020-10-16 23:19:10
【问题描述】:
我想从 MongoDB 中的嵌入文档中查找单个元素。 这是我在 MongoDB 中收集用户的文档:-
[
{
"userId":"001",
"userName":"abc"
"subscriptionDetails" : [
{
"planId" : "1",
"isExpired" : false,
"current" : true,
"timeStamp" : 1592570927981,
},
{
"planId" : "2",
"isExpired" : false,
"current" : true,
"timeStamp" : 1592570927909,
},
{
"planId" : "3",
"isExpired" : false,
"current" : false,
"timeStamp" : 1592570978,
}
]
},
{
"userId":"002",
"userName":"abc"
"subscriptionDetails" : [
{
"planId" : "1",
"isExpired" : false,
"current" : true,
"timeStamp" : 1592570927981,
}
]
}
]
我的nodejs函数通过nodejs原生驱动从嵌入文档中查找单个元素:-
var Plan=await db.collection("user").findOne(
{
userId:001,
'subscriptionDetails.current':false,
'subscriptionDetails.isExpired':false
},
{
'projection':{ "_id": 0,'subscriptionDetails.$':1 }
}
)
console.log(plan)
但是这个函数的响应是:-
{
subscriptionDetails:
[ {
"planId" : "1",
"isExpired" : false,
"current" : true,
"timeStamp" : 1592570927981,
}
]
}
但预期的输出是:-
{
subscriptionDetails:
[ {
"planId" : "3",
"isExpired" : false,
"current" : false,
"timeStamp" : 1592570978,
}
]
}
我该如何解决这个问题?
【问题讨论】:
-
如果我没记错的话,应该是
subscriptionDetails.0: 1而不是subscriptionDetails.$ :1
标签: node.js mongodb node-mongodb-native mongodb-nodejs-driver