猫鼬-从具有ID的对象数组中获取所有具有ID匹配的元素

时间:2019-06-02 01:12:18

标签: javascript reactjs mongoose

我想使用对象数组查询集合。数组对象具有一个名为“ userDBID”的字段以及其他各种字段。

这个答案几乎可以回答我的问题here

在我的情况下,我很好奇如何找到这种方式。

var placements = [
  {
    userDBID: "id1",
    field: "fieldvalue"
  },
  {
    userDBID: "id1",
    field: "fieldvalue"
  }
];

usermodel.find({ _id: { $elemMatch: placements["userDBID"] } }).lean();

我想遍历展示位置数组,并在每个对象中将userDBID用于循环查询。

我知道如果我有一个像这样的用户数据库ID数组,就可以实现

var ids = ["userid1", "userid2"].

usermodel.find({ _id: { $in: ids } }).lean();

我试图查看如何完成此操作,而不必从展示位置创建ID字符串数组,而是使用展示位置数组。

目前,这正是我在路由器中使用的

aRouter.get("/api/user/company/:companyID", async function(req, res) {
  const { companyID } = req.params;
  try {
    let company = await CompanyModel.findById(companyID).populate("placements").lean();
    var userDBIDs = [];
    company.placements.forEach(p => userDBIDs.push(p.userDBID));
    let users = await UserModel.find({ _id: { $in: userDBIDs } }).lean();
    res.status(200).json(users);
  } catch (err) { res.status(500).json(err); }
});

目标是消除对userDBIDs数组和forEach()循环的需要,而仅使用展示位置数组

我读了很多帖子,但是很难看到类似的内容。我在猫鼬文档中也找不到任何示例。我希望$ all或$ elemMatch运算符可以以某种方式使用,也许可以与其他一些组合运算符一起使用

丹尼尔

0 个答案:

没有答案