Jongo查询中的$ elemMatch不起作用

时间:2014-02-14 18:56:24

标签: mongodb playframework-2.2 jongo

我在使用以下查询时遇到了一些问题:

documents()
.find("{values: {$elemMatch: {name: #, value: #}}}", "Date", new DateTime()
.withDate(2027, 6, 2)
.withHourOfDay(18)
.withMinuteOfHour(06)
.withSecondOfMinute(40)
.toDate()).as(Document.class);

它不会抛出任何错误,但会返回一个空列表。

但是,在控制台上它会成功运行并向我显示结果。

我正在深入挖掘源代码,发现实际上Date未被解析为ISODate("yyyy-MM-ddTxxxxx"),而是被解析为{$date: "yyyy-MM-ddTxxxxx"}

我不知道这是一个问题,还是我显然遗漏了一些东西。如果有人能指出我正确的方向,请做。

PS:作为参考,这是控制台查询:

db.documents.find({values: {$elemMatch: {"name": "Date", "value" : ISODate("2027-06-02T18:06:40Z")}}})

1 个答案:

答案 0 :(得分:0)

使用JodaTime创建的日期不等于使用ISODate创建的日期:ISODate(“2027-06-02T18:06:40Z”)

尝试创建iso DateTime,如下所示:

new DateTime("2013-01-19T15:28:58.851Z");

有关更多信息,请参阅github问题:https://github.com/bguerout/jongo/issues/187