python查看mongo所有库_Python – Mongoengine高级查询列表字段

我有一个列表列表,如下所示:

li = [[('A', 'one'), ('A', 'two')], [('B', 'three'), ('B', 'four')]]

我需要查询mongo数据库以获取列表字段在li的每个子列表中至少包含一个项目的所有对象.例如:具有[(‘A’,’one’)OR(‘A’,’two’)]和[(‘B’,’three’)OR(‘B’,’four’)]的项目…

我正在使用mongoengine,但如果我可以使用其他东西来完成这项工作,那么这可能会改变.所以现在我做了很多这样的查询,以避免重复输入:

final = set()

for sublist in li:

query = Obj.objects(list_field__in=sublist)

final &= set(query)

问题是,在处理大型查询结果时这非常慢(我认为这需要很长时间).有没有办法让我加快速度?具体来说,有没有办法可以避免从查询结果中创建集/列表?

我真的希望能够以某种方式写出这样的东西:

query = Obj.objects(list_field__in=li[0] AND list_field__in=li[1] AND ...)

编辑:下面的答案在进一步测试时不起作用,因为mongoengine不允许Q(field = x)& Q(场= Y)

Edit2:这是我想要做的等效的mongoDB查询:

db.obj.find({ "$and": [

{"list_field": {"$in":

[["A", "one"], ["A", "two"]]

}},

{"list_field": {"$in":

[["B", "three"], ["B", "four"]]

}}

]})

我可以在mongoengine中这样做吗?它不会让我用Q进行查询(list_field__in = [(‘A’,’one’),(‘A’,’two’)])| Q(list_field__in = [(‘B’,’three’),(‘B’,’four’)])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值