我需要以最可行的方式搜索具有以下结构的文档。
{ _id:"",
var1: number,
var2: number,
var3: number,
}
在sql方式中,我需要的结果集是这三个的UNION(n个记录按var1排序,n个记录按var2排序,n个记录按var3排序)
使用UNION我希望删除重复项。
作为mongodb的新手,我无法找到为这样的操作编写查询的正确方法,我相信在mongodb中一定是可能的。
如果不可能,请你建议一个替代的nosql解决方案。
答案 0 :(得分:5)
与您正在寻找的最接近的MongoDB运算符是$or
,但这与SQL UNION不完全相同,{{3}}将两个单独的查询合并为一个结果。 MongoDB查询始终针对单个集合,但$or
允许您拥有多个查询子句。
例如:
db.collection.find(
// Find documents matching any of these values
{$or:[
{var1: 123},
{var2: 456},
{var3: 789}
]}
).sort(
// Sort in ascending order
{var1:1, var2:1, var3:1}
)
由于您仅限于查询单个集合,因此结果将在文档级别进行重复数据删除,并且如果指定了一个结果,则所有结果将共享相同的排序顺序。
如果要在MongoDB中模拟UNION(或使用多个集合/查询的其他操作),则必须编写多个查询并将结果集合并到应用程序代码中。