以有效的方式搜索对象列表mongo

时间:2015-03-10 14:42:49

标签: javascript mongodb meteor

我有一个在流星中看起来有点像这样的json。

{
  "_id": "someid",
  "createdAt": ISODate("2015-03-10T14:26:02.430Z"),
  "emails": [{
      "address": "raven@corvid.com",
      "verified": false
    }, {
      "address": "crow@corvid.com",
       "verified": false
  }]
}

我想搜索数据库并查找是否有人有给定的电子邮件,例如crow@corvid.com。如果它只是一个静态值,你可以Meteor.users.findOne({ email: "crow@corvid.com" });,但列表会使它更复杂。

这样做的有效方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以使用$elemMatch运算符将包含crow@corvid.com的文档作为地址值进行匹配。

Meteor.users.findOne({ emails: {$elemMatch: {address:"crow@corvid.com" }}})

答案 1 :(得分:0)

您也可以索引数据库,您可以索引嵌入的文档,您的情况是数组Meteor.users.createIndex( { "emails" : 1 } )