【发布时间】:2016-07-05 05:42:52
【问题描述】:
我在 MongoDB 中有多语言数据,格式如下
{
"_id" : ObjectId("56ebd619e07925a2286c1c3c"),
"translation" : [
{
"language" : "english",
"name" : "shahid Afridi",
"desc" : "batsmen",
"player" : "capten"
},
{
"language" : "spanish",
"name" : "shhid Ofridi",
"desc" : "batsmeen",
"player" : "capteen"
},
{
"language" : "french",
"name" : "hhid afrede is best",
"desc" : "batsmin",
"player" : "captn"
}
]
}
假设是一个西班牙用户,那么我的查询是
db.getCollection('t.m').find({$text: { $search: "best",$language: "es", }})
问题是它在整个翻译数组中搜索(不是法语) 我也尝试过仅搜索并仅返回数组中的特定语言文档我也尝试过基于其他 SO 问题但没有运气,即
db.getCollection('t.m').find({$text: { $search: "capten",$language: "es", },translation: {$elemMatch: {language: "english"}}})
我的问题有几个部分
- 在翻译中仅查询一种语言,即仅以西班牙语或英语进行搜索
- 查询后只返回翻译数组中的特定对象,而不是整个翻译数组
请记住,我为名称、描述和播放器创建了文本索引。任何帮助将不胜感激。
【问题讨论】:
-
$text 索引不能这样工作。它只是在索引下搜索文本而忽略其他因素。文本索引不存储在文档中。如果要限制搜索域,请使用正则表达式。
-
@Saleem 如何只返回匹配的文档
-
请具体说明。匹配什么?文字,语言??
-
当然是语言
-
好吧,我仍然很困惑,但请参阅下面的帖子。
标签: mongodb multilingual