【发布时间】:2015-11-17 16:45:18
【问题描述】:
这是我的数据库的样子:
[
{
_id : xxx,
languages : [
{ lang: "French", level: 1 },
{ lang: "English", level: 3 },
{ lang: "Spanish", level: 4 }
]
},
{
_id : yyy,
languages : [
{ lang: "French", level: 5 },
{ lang: "English", level: 2 }
]
}
]
我有这样的清单:
[
{
lang : "French",
cmp : "at least",
level : 3
},
{
lang : "English",
cmp : "at most",
level : 2
}
]
我的目标是建立一个查询,用这个例子:
选择所有会说法语的用户,级别 >=
且英语水平
所选用户可以使用我不关心的其他语言
换句话说,我想构建一个查询来查找拥有列表中指定的所有语言的每个用户,每种语言都必须匹配级别比较才有效。
这有点难,因为我不习惯 MongoDB 中如此复杂的查询。
目前,我不是在寻找级别比较。我只是使用"profile.languages.lang" : { $all: languagesArray } 和languagesArray 查询匹配良好语言的用户,无论级别如何,我在比较对象列表中使用.map 获得的字符串列表。
我的问题是我不知道如何在我的文档的单个属性/列表上指定这么多的约束。当然,我可以抓取来优化我的搜索,但随着时间的推移,这将非常昂贵,因为我的数据库正在快速增长。
谁能指导我?
谢谢。
【问题讨论】:
标签: javascript mongodb meteor mongodb-query