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

Search through list of objects in efficient way mongo

本文关键字:对象 列表 mongo 搜索 方式 有效      更新时间:2023-09-26

我有一个在流星中看起来有点像这样的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" });,但列表使它更复杂。

做到这一点的有效方法是什么?

您可以使用

$elemMatch运算符来匹配包含crow@corvid.com作为地址值的文档。

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

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