mongodb - 在 MongoDB 中的数组的相同元素中查找 2 个或多个条件
问题描述
我有一个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”。
解决方案
$elemMatch 是这样的:
db['01'].find(
{items:{$elemMatch:{Token:"face",POS:"VERB"}}}
)
将返回整个文档。要仅返回匹配的数组元素,请将其添加到 query 的投影部分:
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"
}
]
}
推荐阅读
- ios - 如果您不想更新小部件,*不*在 getTimeline 调用中调用 CompletionHandler 是否安全?
- spring-boot - Eureka 服务器 - 客户端设置 - UnknownHostException - 无法从 API 获取 Swagegr 定义
- node.js - 在角材料表中显示数据
- python - Python模块日期时间获取第-1天(D-1)
- couchbase - Couchbase 中的类似 GIN 的索引
- python - 如何将字节格式的 Python 字符串转换为字节?
- python - 我计算 (2, n) 范围内素数双胞胎的代码仅适用于某些 N 值
- swift - SwiftUI:检查角度范围是否重叠
- shinyapps - 使用用户界面部署闪亮的应用程序:错误,没有返回闪亮的应用程序对象
- python - 如何正确容纳矩阵以将其转换为半正定矩阵?