0

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

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")}}})
4

1 回答 1

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

于 2014-02-18T07:53:53.367 回答