【发布时间】:2015-09-18 12:07:20
【问题描述】:
我的数据如下所示:
[
{
_id:1
events: [
{selectedPet: 'cat', time: '2015-09-18T12:00:00.000Z'},
{selectedPet: 'dog', time: '2015-09-18T12:00:01.000Z'},
{colourHat: 'green', time: '2015-09-18T12:00:01.200Z'},
{selectedPet: 'bird', time: '2015-09-18T12:00:02.000Z'},
]
},
{
_id:2
events: [
{selectedPet: 'bird', time: '2015-09-18T12:00:00.000Z'},
{selectedPet: 'cat', time: '2015-09-18T12:00:01.000Z'},
{selectedPet: 'dog', time: '2015-09-18T12:00:02.000Z'},
{favouriteAnimal: 'bird', time: '2015-09-18T12:00:04.000Z'},
]
}
]
如何查询最后一个选择的宠物(数组中的最后一个,或按时间最后一个 - 数组是按时间顺序排列的)是一只鸟?
在做:
db.getCollection('events').find({
'events.selectedPet': 'bird'
});
将返回两个文档,但选择最后一个选择的宠物是鸟的文档的预期输出将是:
[
{
_id:1
events: [
{selectedPet: 'cat', time: '2015-09-18T12:00:00.000Z'},
{selectedPet: 'dog', time: '2015-09-18T12:00:01.000Z'},
{colourHat: 'green', time: '2015-09-18T12:00:01.200Z'},
{selectedPet: 'bird', time: '2015-09-18T12:00:02.000Z'},
]
}
]
这是示例数据。我的真实数据集是数十万个文档,每个文档包含大约 500 个事件。
谢谢你=)
【问题讨论】:
-
我不确定预期的结果是什么。请使用edit link 显示预期结果。
标签: javascript arrays mongodb mongodb-query