【发布时间】:2017-04-24 21:20:12
【问题描述】:
我是Mongo 新手,所以这可能是一个微不足道的问题。请多多包涵:)
我的Mongo 文档可以按逻辑分组为有效 和归档 文档。文档有效,如果其revisions.validTo 日期字段中的任何 是null 或大于今天。否则,文档在存档中。
所以集合结构大致是:
[
{
_id: 'valid-1',
info: 'This is valid document because it has a revision with null validTo value',
revisions: [
{
validTo: ISODate("2014-01-01T00:00:00.000Z")
},
{
validTo: null
}
]
},
{
_id: 'valid-2',
info: 'This is valid document because it has a revision with validTo value > today',
revisions: [
{
validTo: ISODate("2014-01-01T00:00:00.000Z")
},
{
validTo: ISODate("2050-01-01T00:00:00.000Z")
}
]
},
{
_id: 'archive-1',
info: 'This document is in archive as all revisions have validTo < today',
revisions: [
{
validTo: ISODate("2014-01-01T00:00:00.000Z")
}
]
}
]
我可以很容易地查询到有效的文档
db.getCollection('collection').find({
$or: [
{ 'revisions.validTo': { $gte: new Date() } },
{ 'revisions.validTo': null }
]
})
它返回[valid-1, valid-2],但我不知道如何查询归档文档以获得结果[archive-1]。例如
db.getCollection('collection').find({
'revisions.validTo': { $lte: new Date() }
})
返回一个文档,如果它有任何带有validTo all 的revisions.validTo 是
由于集合恰好分为这两组,我可能还可以通过查询有效组然后获取整个集合和有效文档集之间的差异来获取存档组。这也许可以通过 Mongo 聚合框架来完成,但我还不知道如何做到这一点。
因此,热烈欢迎任何有关构建存档文档查询的帮助!
(我也在使用 Mongoose,如果这有帮助的话..?)
【问题讨论】:
-
您的
validTo应该是 ISO 日期。你的预期结果是什么? -
我编辑了示例集合以使用
ISODates。还添加了有关预期输出的更多解释。
标签: mongodb mongoose mongodb-query