【发布时间】:2021-10-25 19:53:08
【问题描述】:
我有一个值列表
myValues = [5,6,7,8,9]
我有如下记录
record1 = {"_id" : someID, "index" : datetime, "StartValue" : 1, "EndValue" : 8}
record2 = {"_id" : someID, "index" : datetime, "StartValue" : 9, "EndValue" : 16}
record3 = {"_id" : someID, "index" : datetime, "StartValue" : 17, "EndValue" : 24}
...
现在,我想使用 find() 执行搜索查询,以便在返回的游标中包含一条或多条记录,其中返回的元素具有 StartValue 和 EndValue,它们一起包含列表 @987654324 中的所有值@。在上述情况下,record1 和 record2 将被返回。值[5,6,7,8] 将对应于record1,因为它介于StartValue 和EndValue 之间,包括EndValue。 record2 被返回,因为 myValues 的元素 [9] 在 record2 的 StartValue 和 EndValue 内。
我尝试了以下方法:
myData = myMongoCollection.find({"index" : {"$gt" : current_time - datetime.timedelta(minutes=5)}, "$and" : {{"StartValue" : {"$gte" : {"$or" : myValues}}}, {"EndValue" : { "$lte" : {"$or" : myValues}}}} } )
编辑我尝试使用$gte 和$lte 来尝试捕获可能与StartValue 和EndValue 不匹配的数组值。因此,$in 运算符将不起作用。例如,如果myValues=[5,6,7],则record1 在使用$in 时将不会返回。但是,在这种情况下,我也希望返回 record1。
【问题讨论】:
标签: python python-3.x mongodb pymongo