基本的MongoDB - 如何从表中选择*

时间:2015-04-16 05:34:23

标签: mongodb

这是我所拥有的文件的一个例子:

{ _id: "Y5nf7Hh6DskxjjMEZ", 
  createdAt: ISODate("2015-01-05T01:58:09.365Z"), 
  email_hash: "1basdfkjasldfsomethinghashedalsdjf23", 
  emails: [ 
         { address: "hermione@gmail.com", 
           verified: false } 
          ], 
   isAdmin: false, 
   karma: 0, 
   postCount: 0, 
   profile: {  email: "hermione@gmail.com", 
               notifications: { users: false, 
                                posts: false 
                              }, 
               subscribed: true, 
               username: "hermione" 
             }, 
   services: { password: { bcrypt: "$23098somethingencrypted23094" }, 
   resume: { loginTokens: [] } }, 
   slug: "Hermione", 
   status: { online: false }, 
   username: "hermione"
 }

我正在尝试返回所有电子邮件地址等同于SELECT emails.address FROM usersSELECT profile.email FROM users;

的想法

我如何使用Mongo做到这一点?

2 个答案:

答案 0 :(得分:1)

看起来人们认为这是一个正确的问题,所以这是你的解决方案:

var mails = [];
db.a.find({},{'emails.address' : 1}).forEach(function(o){
    for (var i = 0; i < o.emails.length; i++){
        mails.push(o.emails[i].address)
    }
})

将它放在mongoshell中,邮件将包含您的所有电子邮件地址。请注意,每个文档至少应有一个地址。如果不是这种情况,请添加一行来验证它。

答案 1 :(得分:1)

由于字段电子邮件是一个数组,我建议您先使用$unwind(aggregation)从数组中获取电子邮件,然后将结果与{{{ 1}},获取$project(aggregation)

SELECT emails.address FROM users