我的MongoDB文档结构如下:
结构
{
"stores": [
{
"items": [
{
"feedback": [],
"item_category": "101",
"item_id": "10"
},
{
"feedback": [],
"item_category": "101",
"item_id": "11"
}
]
},
{
"items": [
{
"feedback": [],
"item_category": "101",
"item_id": "10"
},
{
"feedback": ["A feedback"],
"item_category": "101",
"item_id": "11"
},
{
"feedback": [],
"item_category": "101",
"item_id": "12"
},
{
"feedback": [],
"item_category": "102",
"item_id": "13"
},
{
"feedback": [],
"item_category": "102",
"item_id": "14"
}
],
"store_id": 500
}
]
}
这是集合中的单个文档。删除某些字段以产生数据的最小表示。你知道吗
我只想在items
数组中的feedback
字段不为空时获取项。预期结果是:
预期结果
{
"stores": [
{
"items": [
{
"feedback": ["A feedback"],
"item_category": "101",
"item_id": "11"
}
],
"store_id": 500
}
]
}
这是我根据this中的示例所做的尝试,我认为情况非常相似,但没有起作用。我的查询有什么问题,链接中的zipcode search示例不也是这种情况吗?它返回第一个JSON代码中的所有内容,结构:
我尝试的
query = {
'date': {'$gte': since, '$lte': until},
'stores.items': {"$elemMatch": {"feedback": {"$ne": []}}}
}
谢谢。你知道吗
请试试这个:
当您需要对数组进行操作时,我们已经完成了所有这些阶段,这个查询是在假设您正在处理一组大的数据的情况下编写的,因为您正在对日期进行筛选,以防您的文档在第一个
$match
之后的大小大大减小,那么您可以避免遵循介于两个$unwind
之间的$match
阶段参考号:
$match, $unwind, $project, $group
此聚合查询获得所需的结果(使用提供的示例文档并从mongoshell运行):
相关问题 更多 >
编程相关推荐