如何在具有复合索引的集合上高效地执行
例如,索引在字段a和b上。例如:
有没有更高效的方法使用
$in
查找?例如,索引在字段a和b上。例如:
db.foo.createIndex({a:1,b:1)
SQL示例:SELECT *
FROM foo
WHERE (a,b)
IN (
("aVal1", "bVal1"),
("aVal2", "bVal2")
);
我知道你可以做出如下操作:
db.foo.find( {
$or: [
{ a: "aVal1", b: "bVal1" },
{ a: "aVal2", b: "bVal2" },
]
} )
有没有更高效的方法使用
$in
运算符来完成这个操作?
$in
是更好的方法? - kmdreko$or
语法一次查找数千条记录似乎比在具有单个字段索引的集合上执行$in
要慢得多。我希望有一个更高效的解决方案。示例文档是具有这两个键和复合索引以及其他一些数据的文档(不确定其他数据与问题有何关联,但如果有,请告诉我,我可以添加更多细节)。 - newUserNameHere