我有由非唯一键索引的唯一文档。使该文档与众不同的是文档中多个键的组合。例如:
{
first: 'John',
last: 'Foo'
}
{
first: 'Henry',
last: 'Bar'
}
{
first: 'Frank',
last: 'Foo'
}
{
first: 'John',
last: 'Bar'
}
所以,基于上面的例子:如果我们想查询Frank
的第一个名字,我们只会得到一个结果。理想情况下,由于我们只有一个结果,我们甚至不需要将姓氏与我们的查询进行比较。但是,如果我们查询名称John
,我们会得到两个结果,因此我们 需要比较次要参数。
如何在Mongo中实现这种查询方式?如果只有一个匹配项,那么目标只是保存不必要的比较。
请注意,我知道这种查询方式并不能保证正确的文档。它假定主要和每个后续字段匹配“足够好”以验证文档的身份,如果只匹配一个文档。虽然如果还有其他不太明显的原因,为什么不应该使用这种方法,一定要讨论它:)
答案 0 :(得分:0)
我根本不担心这一点,特别是如果你有一个索引。 first,last上的复合索引仅扫描以“first”开头的索引元素。如果那是一个文件,那么它就会停止。如果你还需要匹配“last”,那么它将扫描索引的那些部分。