0

我有由非唯一键索引的唯一文档。该文档的独特之处在于文档中多个键的组合。例如:

{
  first: 'John',
  last: 'Foo'
}
{
  first: 'Henry',
  last: 'Bar'
}
{
  first: 'Frank',
  last: 'Foo'
}
{
  first: 'John',
  last: 'Bar'
}

所以,基于上面的例子:如果我们想查询 的名字Frank,我们只会得到一个结果。理想情况下,由于我们只有一个结果,我们甚至不需要将姓氏与我们的查询进行比较。但是,如果我们查询 name John,我们会得到两个结果,所以我们需要比较次要参数。

如何在 Mongo 中实现这种查询方式?如果只有一个匹配开始,目标只是节省不必要的比较。

请注意,我知道这种查询方式不能保证正确的文档。它假定主字段和每个后续字段匹配“足够好”以验证文档的身份,如果只有一个文档匹配。虽然如果有其他不太明显的原因为什么不应该使用这种方法,一定要讨论它:)

4

1 回答 1

0

我根本不会担心这个,特别是如果你有这个索引的话。first, last 上的复合索引将仅扫描以“first”开头的索引元素。如果那是一份文件,那么它就会停止。如果您还需要匹配“last”,那么它将扫描索引的那些部分。

于 2013-02-07T23:43:30.133 回答