我有以下文件。
{
"_id" : ObjectId("5d0e4232ccfb3ee9ac72a64d"),
"arraydatumobject" : {
"datum" : ISODate("2010-01-02T00:00:00.000+0000")
}
}
当我尝试用$ gte或$ lte甚至两者都找不到日期时,我找不到该文档。
是这样的:
db.getCollection("test").find(
{
arraydatumobject : { $elemMatch:{ datum : {$gte : new ISODate("2008-01-02"), $lte : new ISODate("2011-01-02")}}}
}
)
或这个
db.getCollection("test").find(
{
arraydatumobject : {datum : {$gte : new ISODate("2008-01-02"), $lte : new ISODate("2011-01-02")}}
}
)
什么也没给我。
但是当我使用以下内容时,我确实会得到结果。
db.getCollection("test").find(
{
arraydatumobject : {datum : new ISODate("2010-01-02")}
}
)
我正在获取要搜索的文档...
我在这里想念什么?
答案 0 :(得分:0)
您的第二个示例应该可以使用,但是那里缺少一对花括号。
此外,您应该使用node.js Date
,而不是ISODate
s
尝试:
db.getCollection("test").find(
{
arraydatumobject : {datum : {$gte : new Date(2008,2,1), $lte : new Date(2011, 2, 1)}}
}
)
答案 1 :(得分:0)
具有给定的文档:
{
"_id" : ObjectId("5d0e4232ccfb3ee9ac72a64d"),
"arraydatumobject" : {
"datum" : ISODate("2010-01-02T00:00:00.000+0000")
}
}
您的日期范围find
查询应为:
db.getCollection('test').find({
'arraydatumobject.datum': { // you have an object use obj.prop
$gte : new ISODate("2008-01-02"),
$lte : new ISODate("2011-01-02")
}
})