我有一组包含子文档数组的文档,每个子文档都有一个时间值。 我想看看是否可以根据子文档中的时间返回子文档。
我知道可以使用$slice检索子文档,但$slice只给出特定索引或范围和偏移量。
例子时间!
文档如下....
{
id: 1234,
type: 'a',
subs: [
{ time: 123001, val: 'a' },
{ time: 123002, val: 'b' },
{ time: 123003, val: 'c' }
]
}
如果我使用find({}, {subs: {$slice: [2,1]}})进行查询,那么我会得到类似以下的结果:
{ id: 1234, type: 'a', subs: [{ time: 123002, val: 'b' }]}
我希望可以根据时间戳123002来检索记录,而不是基于偏移量进行检索。
有可能吗?
开始吧!
'subs.2'
来获取数组中的第三个元素。但是通常您不知道第三个元素到底是什么。因此对于数组来说,通常是全有或全无。 - Gates VP$elemMatch
并不完美。上次我使用它时,顺序很重要:{"$elemMatch": {shape: "square", color: "purple"}}
!={"$elemMatch": {color: "purple", shape: "square"}}
。这真的很糟糕,因为你无法控制那个顺序。 - Gates VP