我希望在Django查询中实现AND和OR逻辑,但是在检查了很多帖子并进行搜索后,我发现我无法在同一查询过滤器中实现AND-OR逻辑。
这是我想要实现的
我想获取具有键ABC AND值Value1或Values2 OR Values3和键CDE AND值Value4的记录
I am using python3.6, django1.11, mongoengine, and MongoDB
filter = [ { "Key": "ABC", "Values": ["Value1", "Value2", "Value3"]}, { "Key": "CDE", "Values": ["Value4"]} ]
响应:
[
{
"_id" : ObjectId("5ebd29286310619f046ba866"),
"linked_account_id" : "135566327975",
"payer_account_id" : "135566327975",
"key" : "ABC",
"Value" : "Value1"
}
{
"_id" : ObjectId("5ebd29286310619f046ba866"),
"linked_account_id" : "135566327975",
"payer_account_id" : "135566327975",
"key" : "ABC",
"Value" : "Value2"
}
{
"_id" : ObjectId("5ebd29286310619f046ba866"),
"linked_account_id" : "135566327975",
"payer_account_id" : "135566327975",
"key" : "ABC",
"Value" : "Value3"
}
{
"_id" : ObjectId("5ebd29286310619f046ba866"),
"linked_account_id" : "135566327975",
"payer_account_id" : "135566327975",
"key" : "CDE",
"Value" : "Value4"
}
]
You can use
Q
object, which is mentioned at docs. As an example:此代码等效于: