我在使用以下查询时遇到了一些问题:
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")}}})
答案 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