2016-04-22 62 views
0

这里是我的文档:蒙戈搜索嵌套数组键的值

"_id" : "dAWcFHJzDPJ2XT9Sh", 
"createdAt" : ISODate("2016-04-22T18:03:47.761Z"), 
"services" : { 
    "password" : { 
     "bcrypt" : "$2a$10$NYf53o/Uu8PvHPsGllRGA.WLbVpspNM4jk/6FtCzZLW.70.uQ2HXe" 
    }, 
    "resume" : { 
     "loginTokens" : [ 
      { 
       "when" : ISODate("2016-04-22T18:03:47.771Z"), 
       "hashedToken" : "dECxxuV/QyU2AU+/Zcrqc2Ftq64ZTrdHj5mN/rTGrxU=" 
      } 
     ] 
    } 
}, 
"emails" : [ 
    { 
     "address" : "[email protected]", 
     "verified" : false 
    } 
], 
"profile" : { 
    "first_name" : "Adam", 
    "last_name" : "Moisa" 
} 

我想在电子邮件[I]地址

搜索电子邮件这就是我已经试过(我。使用流星; Meteor.users.find({})fetch()方法返回数据库中的所有用户作为对象格式化像上面):

Meteor.users.find({"emails[0]address": "Adam"}).fetch(); 

我想,要返回上述目的为“亚当”是一个电子邮件在电子邮件[0]地址

谢谢!

回答

0

无需指定索引。

Meteor.users.find({"emails.address": "Adam"}).fetch();

0

指数并不需要指定,所以你可以这样做:

Meteor.users.find({"emails.address": "Adam"}).fetch(); 

但是,如果你想使用一个特定的指数,这样做:

Meteor.users.find({"emails[0].address": "Adam"}).fetch(); 
0

想通了:

Meteor.users.find({"emails.address": "[email protected]"}).fetch(); 

您可以只做emails.address,它会将任何地址键与来自电子邮件中任何数组的值相匹配。

(从searchSource使用正则表达式,使其与任何匹配的工作:

function buildRegExp(searchText) { 
// this is a dumb implementation 
    var parts = searchText.trim().split(/[ \-\:]+/); 
    return new RegExp("(" + parts.join('|') + ")", "ig"); 
}