Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何对django mongoengine中的两个嵌入字段应用过滤条件?_Python_Django_Mongodb_Mongoengine - Fatal编程技术网

Python 如何对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", }, {

我正在使用django和mongoengine。我尝试了所有的方法来解决这个问题。我也尝试了原始查询,但没有成功

{
  "_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)