Node.js 如何匹配mongoDB查找数组中的值
这是结果数组,我希望“$match”stepQuoteTool=trueNode.js 如何匹配mongoDB查找数组中的值,node.js,mongodb,Node.js,Mongodb,这是结果数组,我希望“$match”stepQuoteTool=true { "quotes" : [ { "_id" : ObjectId("5e0f02dc5023ec1de34e45bf"), "firstName" : "Sagar", "stepQuoteTool" : true, "stepCarDetail" : true,
{
"quotes" : [
{
"_id" : ObjectId("5e0f02dc5023ec1de34e45bf"),
"firstName" : "Sagar",
"stepQuoteTool" : true,
"stepCarDetail" : true,
}
],
"_id" : ObjectId("5e0f02dc5023ec1de34e45be"),
"firstName" : "Sagar",
"createdAt" : ISODate("2020-01-03T09:01:16.748+0000"),
"device" : "Desktop",
"browser" : "Chrome",
"browserVersion" : "79.0.3945.88",
"os" : "Linux",
"screenSize" : "1920 X 383",
}
下面是我的mongodb查询。有人能帮忙吗?我是mongodb的初学者
db.getCollection("tracks").aggregate([
{ $match: {'stepQuoteTool':true} },
{
$lookup: {
from: 'quotes',
foreignField: 'track',
localField: '_id',
as: 'quotes'
}
},
{
$unwind: {
path: '$quotes',
preserveNullAndEmptyArrays: true
}
},
{
$group: {
_id: { _id: "$_id" },
firstName: { "$addToSet": "$firstName" },
quotes: { "$addToSet": "$quotes" },
createdAt: { "$addToSet": "$createdAt" },
device: { "$addToSet": "$device" },
browser: { "$addToSet": "$browser" },
browserVersion: { "$addToSet": "$browserVersion" },
os: { "$addToSet": "$os" },
screenSize: { "$addToSet": "$screenSize" },
}
}
])
请给我可能的解决办法,
谢谢。在您解开
引号
数组后,引号文档不应该是数组。这是你在问题中给出的正确的O/P吗。并在查找{$match:{'quotes.stepQuoteTool':true}
之后移动匹配管道,它工作正常。谢谢@AmbianBeing成功了吗,在放松后移动比赛?成功了。请看一下我根据您的解决方案实现的屏幕截图。好的,很酷。如果它有效,你可以把它作为一个答案发布并接受。这个问题的未来读者可能会从中受益。我试过了,但得到的是空数组引号。请查看此屏幕截图:
db.getCollection("tracks").aggregate([
{
$lookup: {
from: 'quotes',
foreignField: 'track',
localField: '_id',
as: 'quotes'
}
}, {
$project: {
quotes: {
$filter: {
input: "$quotes",
as: "data",
cond: {
$eq: ["$$data.stepQuoteTool", true]
}
}
}
}
}
])