【发布时间】:2021-11-18 11:22:03
【问题描述】:
我是 MongoDB 新手,我无法仅检索嵌入文档数组的子集。例如,我有以下文件:
{
"_id": "Stock1",
"data": [{"value": 10.0, "date": "2000-01-01T00:00:00.000Z"},
{"value": 12.0, "date": "2010-01-01T00:00:00.000Z"},
{"value": 14.0, "date": "2020-01-01T00:00:00.000Z"}]
},
{
"_id": "Stock2",
"data": [{"value": 10.0, "date": "2000-01-01T00:00:00.000Z"},
{"value": 8.0, "date": "2010-01-01T00:00:00.000Z"},
{"value": 6.0, "date": "2020-01-01T00:00:00.000Z"}]
},
{
"_id": "Stock3",
"data": [{"value": 10.0, "date": "2000-01-01T00:00:00.000Z"},
{"value": 10.0, "date": "2010-01-01T00:00:00.000Z"},
{"value": 10.0, "date": "2020-01-01T00:00:00.000Z"}]
}
我想在“Stock1”和“Stock3”的date 2010-01-01 和 2020-01-01(包括)之间检索data,即我想得到这个:
{
"_id": "Stock1",
"data": [{"value": 12.0, "date": "2010-01-01T00:00:00.000Z"},
{"value": 14.0, "date": "2020-01-01T00:00:00.000Z"}]
},
{
"_id": "Stock3",
"data": [{"value": 10.0, "date": "2010-01-01T00:00:00.000Z"},
{"value": 10.0, "date": "2020-01-01T00:00:00.000Z"}]
}
我试过find命令:
{"_id": {$in: ["Stock1", "Stock3"]}, "data.date": {$gte: ISODate('2010-01-01'), $lte: ISODate('2020-01-01')}}
但我正在检索所有日期,这是不可取的。
我知道aggregate 命令,但我不确定如何构建管道。有人可以指出我应该如何进行吗?
任何帮助将不胜感激!
【问题讨论】:
标签: arrays mongodb mongodb-query nosql document