Mongodb 在一个索引中放置多个字段

Mongodb 在一个索引中放置多个字段,mongodb,Mongodb,当我有一个用户集合时,其结构如下: { ... phone:"XXXXXXXXXX", email:"XXXXXXXXXX", ... } db.users.find({contactinfos:"E-Mail-Address or Phonenumber"}) 有没有办法将电话和电子邮件这两个字段放在一个索引中,例如称为联系人信息,这样我就可以通过他们的电话号码或电子邮件地址查询我的用户,如下所示: { ... phone:"XXXXXXX

当我有一个用户集合时,其结构如下:

{
    ...
    phone:"XXXXXXXXXX",
    email:"XXXXXXXXXX",
    ...
 }
db.users.find({contactinfos:"E-Mail-Address or Phonenumber"})
有没有办法将
电话
电子邮件
这两个字段放在一个索引中,例如称为
联系人信息
,这样我就可以通过他们的电话号码或电子邮件地址查询我的用户,如下所示:

{
    ...
    phone:"XXXXXXXXXX",
    email:"XXXXXXXXXX",
    ...
 }
db.users.find({contactinfos:"E-Mail-Address or Phonenumber"})

您不需要创建聚合字段。您可以使用操作员查询您的收藏:

db.users.find( { $or: [ { email: "email@somethingc.com"}, { phone: "123456" } ] } );
这将通过电子邮件或电话查找所有文档

然后,您可以在这两个字段上创建一个索引,以加快查询速度(如果您使用的是MongoDB 2.4)


如果您使用的是MongoDB 2.6,您可以利用这些字段并为其创建两个单独的索引。

MongoDB 2.6会自动完成您提到的查询中的相交吗?或者我必须修改查询以启用交叉点吗?如果您在
电子邮件
电话
字段上创建索引,MongoDB 2.6将使用索引交叉点。但使用复合索引几乎总是比索引交叉更快。更多信息很酷,谢谢!在这种情况下,我认为,交叉点不应该花费时间,因为当我使用电子邮件地址进行查询时,电话索引中应该没有结果,反之亦然。所以它基本上是一个无需任何操作的相交:)