当我有一组用户时,其结构如下:
{
...
phone:"XXXXXXXXXX",
email:"XXXXXXXXXX",
...
}
有没有办法将字段phone
和email
放入一个索引中,例如名为contactinfos
,以便我可以通过他们的电话号码或他们的电子邮件查询我的用户这样的地址:
db.users.find({contactinfos:"E-Mail-Address or Phonenumber"})
答案 0 :(得分:1)
您不需要创建聚合字段。您可以使用$or运算符查询您的收藏集:
db.users.find( { $or: [ { email: "email@somethingc.com"}, { phone: "123456" } ] } );
这将找到所有带有电子邮件或电话的文件。
然后,您可以在两个字段上创建compound index以加快查询速度(如果您使用的是MongoDB 2.4)。
如果你正在使用MongoDB 2.6,你可以利用index intersection并为这些字段创建两个单独的索引。