【发布时间】:2013-02-07 20:45:28
【问题描述】:
我有由非唯一键索引的唯一文档。该文档的独特之处在于文档中多个键的组合。例如:
{
first: 'John',
last: 'Foo'
}
{
first: 'Henry',
last: 'Bar'
}
{
first: 'Frank',
last: 'Foo'
}
{
first: 'John',
last: 'Bar'
}
所以,基于上面的例子:如果我们想查询Frank 的名字,我们只会得到一个结果。理想情况下,由于我们只有一个结果,我们甚至不需要将姓氏与我们的查询进行比较。但是,如果我们查询名称 John,我们会得到两个结果,因此我们将需要比较次要参数。
如何在 Mongo 中实现这种查询方式?如果只有一个匹配开始,目标只是节省不必要的比较。
请注意,我知道这种查询方式不能保证正确的文档。它假设主字段和每个后续字段匹配“足够好”以验证文档的身份,如果只有一个文档匹配。虽然如果有其他不太明显的原因不应该使用这种方法,请务必讨论它:)
【问题讨论】:
-
任何原因添加
limit(1)和sort()参数不起作用? -
limit(1)如果找到多个匹配项,则不会匹配第二个/etc 参数,因此您将无法过滤不正确的匹配项。至于sort(),我不这么认为.. 虽然也许有一些我不熟悉的排序用法 -
所以您正试图阻止 MongoDB 在
Frank案例中检查last = 'Foo',纯粹是出于性能原因? -
是的。显然这个例子很简单,但我想在某些情况下,额外长度的性能,特别是复杂的,比较最好保存而不使用。想法?
-
我的想法是,这不是一个非常有趣或有用的用例。 :)
标签: mongodb