在MongoDB中的数组的相同元素中查找2个或多个条件

在MongoDB中的数组的相同元素中查找2个或多个条件,mongodb,mongodb-query,Mongodb,Mongodb Query,我有一个json数据结构,如下所示: "_id" : { Inst_Id: 1119689706 }, "items" : [ { "Token" : "Let", "Lemma" : "let", "POS" : "VERB" }, { "Token" : "'s", "Lemma" : "-PRON-", "POS

我有一个json数据结构,如下所示:

 "_id" : {
           Inst_Id: 1119689706
          },
 "items" : [
     {
        "Token" : "Let", 
        "Lemma" : "let", 
        "POS" : "VERB"
     },
     {
        "Token" : "'s", 
        "Lemma" : "-PRON-", 
        "POS" : "PRON" 
     },       
        {
         "Token" : "face", 
          "Lemma" : "face", 
          "POS" : "VERB"
         },
         {
          "Token" : "it", 
          "Lemma" : "-PRON-", 
          "POS" : "PRON", 
         }
          ]

我的项目基本上是具有句子标记数组的字段(例如,“让我们在里面面对它。)如何在数组的同一项目内搜索2个或多个条件?我尝试过$elemMatch,但它只匹配数组中的元素,而不匹配一个数组中的元素。例如,我想查找标记为“face”的句子词性同时是动词

$elemMatch就是这样:

db['01'].find(
    {items:{$elemMatch:{Token:"face",POS:"VERB"}}}        
)
将返回整个文档。若要仅返回匹配的数组元素,请将其添加到查询的投影部分:

db['01'].find(
    {items:{$elemMatch:{Token:"face",POS:"VERB"}}}, 
    {items:{$elemMatch:{Token:"face",POS:"VERB"}}}
)
会回来的

    { 
    "_id" : {
        "Inst_Id" : 1119689706.0
    }, 
    "items" : [
        {
            "Token" : "face", 
            "Lemma" : "face", 
            "POS" : "VERB"
        }
    ]
}

根据上述问题的描述,作为解决方案,请尝试执行以下MongoDB查询

    db.getCollection("test").find({
    items: {
        $elemMatch: {
            Token: 'face',
            "POS": "VERB"
        }
    }
}, {
    'items.$': 1
})

只是想澄清一下:face+动词的预期输出是什么?可能与Thank you重复。我不知道我们可以用两个或更多的元素制作一个$elemMatch。精彩的!