Product {
variations [
{
color,
size
}
]
}
{
variations [
{
color: "Verde",
size: "xxs"
},
{
color: "Blu",
size: "m"
},
]
}
示例:
通常有两个选项可以实现 mongoDB 中的需求,最合适的是使用 $elemMatch 操作:
选项 1:查找/项目
db.collection.find({
variations: {
"$elemMatch": {
"color": "Verde",
"lots.size": "xxs"
}
}
},
{
variations: {
"$elemMatch": {
"color": "Verde",
"lots.size": "xxs"
}
}
})
解释: 这是最简单的选择。
选项2:聚合/$match/$filter
db.collection.aggregate([
{
$match: {
variations: {
"$elemMatch": {
"color": "Verde",
"lots.size": "xxs"
}
}
}
},
{
"$project": {
variations: {
"$filter": {
"input": "$variations",
"as": "v",
"cond": {
"$and": [
{
"$eq": [
"$$v.color",
"Verde"
]
},
{
"$in": [
"xxs",
"$$v.lots.size"
]
}
]
}
}
}
}
}
])
解释: 在此选项中,您可以设置条件并通过聚合框架过滤匹配元素。