Python 如何对django mongoengine中的两个嵌入字段应用过滤条件?
我正在使用django和mongoengine。我尝试了所有的方法来解决这个问题。我也尝试了原始查询,但没有成功Python 如何对django mongoengine中的两个嵌入字段应用过滤条件?,python,django,mongodb,mongoengine,Python,Django,Mongodb,Mongoengine,我正在使用django和mongoengine。我尝试了所有的方法来解决这个问题。我也尝试了原始查询,但没有成功 { "_id" : ObjectId("556fe5c338a01311c4c4d1c1"), "uuid" : "5c8ae1dfcb1d060d5a951d96d4798a84cdf090e9", "snapshot_values" : [{ "key" : "gender", "value" : "Female", }, {
{
"_id" : ObjectId("556fe5c338a01311c4c4d1c1"),
"uuid" : "5c8ae1dfcb1d060d5a951d96d4798a84cdf090e9",
"snapshot_values" : [{
"key" : "gender",
"value" : "Female",
}, {
"key" : "marital_status",
"value" : "married",
}],
},
{
"_id" : ObjectId("556fe5c338a01311c4c4d1c1"),
"uuid" : "5c8ae1dfcb1d060d5a951d96d4798a84cdf090e9",
"snapshot_values" : [{
"key" : "gender",
"value" : "Female",
}, {
"key" : "marital_status",
"value" : "unmarried",
}],
},
{
"_id" : ObjectId("556fe5c338a01311c4c4d1c1"),
"uuid" : "5c8ae1dfcb1d060d5a951d96d4798a84cdf090e9",
"snapshot_values" : [{
"key" : "gender",
"value" : "Female",
}, {
"key" : "marital_status",
"value" : "married",
}],
},
在这里,我想应用选择那些关键=婚姻状况和价值=已婚的数据
condition1:
{key=marital_status, value=married}, will return two data,
condition:2
{key=marital_status,value=unmarried}, and {key=gender,value=female}, will return singe raw data from above data.
任何人都知道如何进行满足上述条件的查询
请给我建议,哪怕是一点点帮助,建议对我也会有帮助的
提前感谢。对于第一个条件,请尝试以下查询,该查询使用访问数组的元素并访问嵌入文档的字段:
db.user.find({
"snapshot_values.key": "marital_status",
"snapshot_values.value": "married"
})
对于第二个条件,使用以下利用运算符的查询:
db.user.find({
"snapshot_values.key": { "$in": ["marital_status", "gender"] },
"snapshot_values.value": { "$in": ["unmarried", "female"] }
})
--更新-- django mongoengine版本应该类似于以下示例,您可以在其中使用: 第一个条件是
Person_Snapshot.objects(Q(snapshot_values__key="marital_status") & Q(snapshot_values__value="marries")
第二个条件(使用中的)
感谢您的回答,实际上我正在使用django和mongoengine,所以我想,我不能使用这个纯mongo查询。能否请您向mongoengine查询?它将是这样的,Person_Snapshot.objects(uu raw_uuu={'$and':[{'Snapshot_values.key':'mutual_status','Snapshot_values.value':mutual_status_select}]})@jatin更新了我的答案,虽然没有经过测试,但我相信你可以尝试更新,或者参考更多细节。+1票支持你的努力和答案,但不能解决我的问题,对于第二个条件,查询必须只返回一个原始值
key_list = ["marital_status", "gender"]
value_list = ["unmarried", "female"]
Person_Snapshot.objects(Q(snapshot_values__key__in=key_list) & Q(snapshot_values__value__in=value_list)