【发布时间】:2020-05-07 18:15:05
【问题描述】:
我在编写查询时遇到了一些麻烦,我想获取所有文档,但它们没有单个子文档,其属性 IsCurrentRevision 为 true。换句话说,只获取没有单个修订标记为当前的文档。
到目前为止我所拥有的是:
{StartTimeUtc: {$gte: new ISODate('12/14/2019')},
EndTimeUtc: {$lte: new ISODate('01/21/2020')},
IsDeleted: false, 'MyDocument.IsCurrentRevision': false,
"MyDocument.1.IsCurrentRevision" : {$exists: false}}
这让我有所了解,但问题是我必须手动查询索引。在这种情况下,上述查询返回只有 1 个修订版的所有文档(因此子文档数组中只有一个元素),其修订版没有标记为当前。因此,如果我想获得具有 2 个修订的文档,并且第二个也被标记为 false,我需要将查询更新为:
{StartTimeUtc: {$gte: new ISODate('12/14/2019')},
EndTimeUtc: {$lte: new ISODate('01/21/2020')},
IsDeleted: false, 'MyDocument.1.IsCurrentRevision': false,
"MyDocument.2.IsCurrentRevision" : {$exists: false}}
这显然很繁琐,有没有更好的方法?如果有帮助,我正在使用 Mongo Compass
编辑:
这是我的文档的样子
{
_id: Guid,
TemplateId: guid,
StartTimeUtc: DateTime,
EndTimeUtc: DateTime
..
..
SoapNoteRevisions: Array {
_id: Guid,
IsCurrentRevision: boolean,
..
..
}
}
我去掉了不需要的位,因为文档本身在修订版中也有相当多的字段(另一个子数组)
【问题讨论】:
-
可以分享收藏吗
-
查看上面的编辑,如果您需要更多信息,请告诉我
标签: mongodb mongodb-query