在MongoDB中的数组的相同元素中查找2个或多个条件
我有一个json数据结构,如下所示:在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
"_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。精彩的!