我想知道在MongoDB中是否可能进行以下操作。
我收集了以下形状的文件:
{
"day" : ISODate("2018-12-31T23:00:00.000Z"),
"value": [some integer value]
}
是否可以查询此集合以仅获取具有与上一个不同的值的文档(按天升序排序时)?例如,具有以下文档:
{
"day" : ISODate("2019-04-01T00:00:00.000Z"),
"value": 10
},
{
"day" : ISODate("2019-04-02T00:00:00.000Z"),
"value": 10
},
{
"day" : ISODate("2019-04-03T00:00:00.000Z"),
"value": 15
},
{
"day" : ISODate("2019-04-04T00:00:00.000Z"),
"value": 15
},
{
"day" : ISODate("2019-04-05T00:00:00.000Z"),
"value": 15
},
{
"day" : ISODate("2019-04-06T00:00:00.000Z"),
"value": 10
}
我想检索2018-04-01、2018-04-03和2018-04-06的文档。数据中没有“漏洞”,我有一段时间内所有天的条目。
----编辑
我看不到链接的答案也可以回答我的问题。我无法按价值分组,因为价值会在以后重复出现,并且我需要所有价值等于某个数字的期间。在上面的示例中,您可以将2018-04-06的值更改为10,结果仍然需要获取三个文档。
----编辑2
运行后收到的结果
aggregate([{ "$sort": { "day": 1, "value": 1 } }, { "$group": { "_id": "$value", "day": { "$first": "$day" } } }])
是这样的:
/* 1 */
{
"_id" : 15.0,
"day" : ISODate("2019-04-03T00:00:00.000Z")
}
/* 2 */
{
"_id" : 10.0,
"day" : ISODate("2019-04-01T00:00:00.000Z")
}
不是我要查找的内容(应该有三个文档,其中两个的值为10)。