2015-12-15 85 views
0

您好,我有這種類型的對象。Mongo db搜索像查詢,但在子數組中的標準

{ 
    "_id" : "wavQwJn5ZGQw2sTqb", 
    "createdAt" : ISODate("2015-12-15T13:55:21.526Z"), 
    "services" : { 
     "password" : { 
      "bcrypt" : "passhash" 
     }, 
     "resume" : { 
      "loginTokens" : [ 
       { 
        "when" : ISODate("2015-12-15T13:56:48.837Z"), 
        "hashedToken" : "tokenhash" 
       } 
      ] 
     } 
    }, 
    "profile" : { 
     "name" : "First Name LastName" 
    }, 
    "emails" : [ 
     { 
      "address" : "[email protected]", 
      "verified" : false 
     }, 
     { 
      "address" : "[email protected]", 
      "verified" : false 
     } 
    ] 
} 

我必須尋找通過他們的電子郵件或配置文件名稱的用戶,但是該電子郵件是在子陣列,每個元素有一個小物體和外形是一個對象,所以我真的很困惑在這裏。

例如,如果郵件是主要目的,我可以做到這一點:

let selector = { 
    'email' : { '$regex' : '.*' + searchString || '' + '.*', '$options' : 'i' }, 
} 

Meteor.users.find(selector, options); 

但unfortunaly在子陣,所以如果有人可以解釋我如何能做到這一點將是巨大的。先謝謝你。

回答

0

在這裏,您可以使用聚合框架搜索電子郵件。

$ unwind運營商可以幫助您。

db.collection.aggregate([{$unwind:'$emails'},{$match:{'emails.address':{$eq:'[email protected]'}}}]); 

文獻以供參考:MongoDB unwind docs