【问题标题】:Mongoose: deep searchMongoose:深度搜索
【发布时间】:2022-01-04 17:07:46
【问题描述】:

我有一个返回值如下的模式:

"_id": "61d4791786dbde4bb0ecd622",
"members": [
    {
        "score": 75,
        "_id": "61d4791886dbde4bb0ece492",
        "userId": "60df085d4729322a7464babc",
        "penalties": [
            {
                "_id": "61d4791886dbde4bb0ece493",
                "penaltyScore": -10
            },
            {
                "_id": "61d4791886dbde4bb0ece494",
                "penaltyScore": -15
            }
        ]
    },
]

我想通过userId 查找寄存器。我尝试使用:

ManeuverStatistics.find(userId && { members: { $in: userId } }).exec(
    (err, data) => {
      if (err) {
        res.status(500).send({ message: "failed!" });
        return;
      }
      res.status(200).send(data);
    }
  );

但它不起作用...如何进行深度搜索以查找与 members 数组中的 userId 匹配的内容?

【问题讨论】:

    标签: node.js mongoose find mongoose-schema


    【解决方案1】:

    我花了几个小时试图解决它,但我找到了一个可能的解决方案。为了帮助任何其他程序员,这是我的方法:

    ManeuverStatistics.find(userId && { "members.userId": userId }).exec(
      (err, data) => {
        if (err) {
          res.status(500).send({ message: "failed!" });
          return;
        }
        res.status(200).send(data);
      }
    );
    

    基本上,我可以使用members.userId 访问对象内部的密钥userId

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-11
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      相关资源
      最近更新 更多