我有一个集合,其中_id
是时间和字符串的复合(是的,我知道它很糟糕但是... 就像我到达时那样) 。该集合中的一条记录如下:
{
"_id": {
"my_string": "Foo",
"my_time": new Date("2014-12-19T12:38:00-0500")
},
"field1": 60,
"field2": 17,
}
基本上,我正在尝试找出一个查询,该查询会向我提供_id.my_string
为Foo
且_id.my_time
介于time1
和{{1}之间的记录}
我是否可以使用time2
构建查询$and
来查询复合dict
的不同部分?
返回0条记录:
_id
这样做:
my_collection.find(
{
'_id': {
'my_string': 'Foo',
'$and': [
{'my_time': {'$gte': datetime.datetime(...)}},
{'my_time': {'$lte': datetime.datetime(...)}},
]
}
}
)
万一你没有注意到,我对MongoDB来说真是个新手。
提前谢谢!
答案 0 :(得分:1)
my_collection.find(
{
'$and' :
[
{'_id.my_string': 'Foo'},
{'_id.my_time' : {'$gte': datetime.datetime(...), '$lte': datetime.datetime(...)}},
]
}
}
)
您无需使用$and
进行此查询。
以下查询可以写为:
my_collection.find(
{
'_id.my_string': 'Foo',
'_id.my_time' :
{
'$gte': datetime.datetime(...),
'$lte': datetime.datetime(...)
}
}
)