我正在构建的一个应用程序目前有一些集合,每个集合包含不同的词性,例如动词,名词,形容词 ,以及完整句子的另一个集合。 有 2种语言可用,并且每个文档都有一个语言字段,例如:
const Noun = mongoose.model('Noun', {
word: String,
article: String,
lang: String,//<-language field
meaning: String,
img: String,
plural: String
});
只要我不想从其他集合中获取该设计,它就可以工作-假设我有一个练习随机抽取了一个动词或一个名词并要求用户对其进行翻译。
在那种情况下,我将不得不作某种条件。我觉得这不是一个好方法,但这就是它的样子。
简体:
if(type === 'noun') {
Noun.find({lang: req.body.lang});
} else {
Verb.find({lang: req.body.lang});
}
鉴于每个集合可能有10.000个文档,将将现有集合合并为一个并添加两个字段:类型和语言< / strong>到每个文档?
基于这些字段获取随机文档是否太慢?
{
type: 'noun',
language: 'english'
}
我现在获取随机名词的方式是:
Noun.aggregate([
{ $match: { lang: req.params.lang } },
{ $sample: { size: 1 } }
])
让我知道是否有不清楚的地方或缺少任何重要信息。
谢谢