查询mongodb(mongoose)在子文档中的时间跨度

时间:2014-11-16 16:07:13

标签: mongodb mongoose

我有一个mongoose架构,如下所示:

var wishSchema = mongoose.Schema({
    foo: {
        bar: String,
        fooDate: Date
    },
});

我正在尝试查询fooDate在特定日期之后的所有文档。我提出了这个解决方案,但似乎没有做得很好:

{
   foo: {
       $elemMatch: {
           fooDate: { $gt: new Date('2014-01-01') }
       }
   }
}

我错过了什么? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

$elemMatch用于数组。您要查找的查询是:

{'foo.fooDate': {$gt: new Date('2014-01-01') }}

$elemMatch适用于以下模式,如果foo数组中至少有一项与指定查询(或所有指定查询)匹配,则返回结果:

var wishSchema = mongoose.Schema({
    foo: [
        bar: String,
        fooDate: Date
    ]
});

如果您只需要在内部文档数组上运行一个查询,最好只使用dot notation

{'foo.fooDate': {$gt: new Date('2014-01-01') }}

希望这有帮助!