【问题标题】:Mongoose - query to get all subdocuments of a documentMongoose - 查询以获取文档的所有子文档
【发布时间】:2017-02-28 00:14:11
【问题描述】:

我对猫鼬很陌生,我有一个公司列表,每个公司都有一个用户子数组。我只想用猫鼬检索特定公司的所有用户:

一家公司就像

{
    "_id": "57ffa47f5b70f90831212348",
    "name": "mycompany",
    "address": "...",
    "phone": "...",
    "users": [
        {
            "_id": "57ffa47f5b70f90831212347",
            "username": "alpha",
            "name": "myname",
            "surname": "mysurname",
            "password": "..."
        }
    ]
}

我试过了

Company.findOne({
        'name': req.user.name
    })

      .aggregate({$unwind: '$users'})

      .exec(
        function(err, users) {
          if (err) res.status(500).send(err);

          res.json(users);
        });

但我没有运气...我不确定如何正确使用聚合。

【问题讨论】:

    标签: node.js mongoose subdocument


    【解决方案1】:

    只需填写 company.users

    Company.findOne({
            'name': req.user.name
        })
          .populate('users', 'username name surname')
          .exec(
            function(err, company) {
              if (err) res.status(500).send(err);
    
              res.json(company.users);
            });
    

    【讨论】:

    • 感谢它有效!它也可以使用 .populate('users') 。你知道我在哪里可以找到关于populateaggregate 的很好的解释吗?
    • Mongoose Docs 当然,populate('users') 不太安全,你可能会发送敏感数据(密码,passwod_hash)
    • 我试过了,但我发现它不是很清楚......无论如何,感谢您提供有关安全性的提示
    • 另外,没有搜索,什么也没有
    猜你喜欢
    • 2020-07-16
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2021-07-04
    • 2020-08-02
    相关资源
    最近更新 更多