javascript - 猫鼬检查任何地图条目值中是否存在文本
问题描述
我们需要将翻译放在 JSON 对象中的 Map 中。当我们搜索一个项目时,我们只会传递名称,我们需要检查该名称是否在一个翻译对象中。
例子:
"item" : {
"name" : {
"en_US": "Hello"
"id_ID" : "Halo"
}
}
客户端只会发送,name
但我们不知道使用的语言(例如,Halo),我们需要以name
任何语言返回文档。我们应该如何定义过滤器对象?到目前为止,我看到的所有示例都要求我们定义要过滤的完整对象信息(例如:)item.name.id_ID
。
解决方案
db.collection.aggregate([
{
"$addFields": {//reshape it to match on value field
"field": {
"$objectToArray": "$item.name"
}
}
},
{//reshape again to get the only matching element
"$unwind": "$field"
},
{
$match: {//match condition
"field.v": "Hello"
}
},
{
$project: {//project only what is needed
"field.k": 1,
"item": 1
}
}
])
推荐阅读
- javascript - 像时刻一样从对象格式化 Luxon 日期
- javascript - 有没有办法使用 Puppeteer 定位特定元素并在将 html 转换为 pdf 时保留 CSS?
- python - 将库导入 Python 文件
- postgresql - postgresql/pgAdmin - 接受 start_date 和 end_date 参数作为查询运行的输入
- visual-studio-code - 该进程试图写入一个不存在的管道
- python - 调试 Python 时调用 Stack empty
- python - 减少创建 BeautifulSoup 对象时的开销
- amazon-aurora - Postgres (AWS Aurora) 未强制执行唯一索引/约束
- java - 如何删除重复项?
- javascript - twitter api 流用户的主页时间线