我有一个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”而POS为“ VERB”的句子。
答案 0 :(得分:0)
$ 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"
}
]
}
答案 1 :(得分:0)
根据上述问题的描述,作为解决方案,请尝试执行以下MongoDB查询
db.getCollection("test").find({
items: {
$elemMatch: {
Token: 'face',
"POS": "VERB"
}
}
}, {
'items.$': 1
})