免责声明:在MongoDB中是全新的。
我的文档结构如下:
{
"hd": [
{
"rd": [
{
"rm": [
{
"code": "a1asd"
},
{
"code": "a24aer"
}
]
},
{
"rm": [
{
"code": "b16hwe7"
},
{
"code": "b2z41s"
}
]
}
]
}
]
}
并且我想返回仅包含例如“ a1”的子文档。我将如何解决这个问题?
到目前为止我尝试过的解决方案看起来像这样
db.foo.aggregate([
{
$match: {
"hd.rd.rm.code": /a1/
}
},
{
$project: {
"hd.rd": {
$filter: {
input: "$hd.rd",
as: "roomData",
cond: {
$eq: [
{
$substr: [ "$$roomData.rm.code", 0, 10]
},
"a1"
]
}
}
}
}
}
])
但是上面的查询不起作用。我发现$ regexMatch无法与$ cond一起使用,因此目前我很茫然。
我的预期结果将如下所示:
{
"hd": {
"rd": {
"rm": {
"code": "a1asd"
}
}
}
}
此查询可能会对您有所帮助,
db.collection.aggregate([
{
"$unwind": "$hd"
},
{
"$unwind": "$hd.rd"
},
{
"$unwind": "$hd.rd.rm"
},
{
$match: {
"hd.rd.rm.code": /a1/
}
}
])