node.js - MongoDB、Mongoose 查找所有 _id 等于数组中对象键的位置

标签 node.js mongodb mongoose

在查询中遇到困难,我有一组用户:

{
    "_id": "5c87bda25fdaasdf00171001e1",
    "name": "UserTwo Name",
    "email": "email2@example.com"
},{
    "_id": "5c87bda25fda8b00171001e1",
    "name": "User Name",
    "email": "email@example.com"
}

我还有一个包含 _userId 键的对象数组。我需要获取用户 _id 等于数组中 _userId 值的所有用户。

[
    {_userId: "5c87bda25fda8b00171001e1"},
    {_userId: "5c87bda25fdaasdf00171001e1"},
]

到目前为止我所拥有的是:

User.find(
        {
            _id: { $in: req.body.users }
        }
    )

如果 req.body.users 只是一个 ids 数组,而不是对象数组,那应该没问题。

任何帮助将不胜感激。 谢谢,

最佳答案

您应该像这样修改您的查询:

 User.find({
            _id: { $in: req.body.users.map(user => ObjectId(user._userId) }
 });

您需要将 _userId 字符串转换为 ObjectId。这将通过 map 函数来完成。

关于node.js - MongoDB、Mongoose 查找所有 _id 等于数组中对象键的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55159716/

相关文章:

javascript - Node、Express + Jade 加载脚本一次

node.js - 产品广告 API 不起作用

javascript - Meteor 仅检索集合中所有项目的一张图像

node.js - NodeJS : Dynamic form

node.js - 从 API.ai 履行请求获取代理信息

javascript - 在 Azure 门户上运行 nodejs Cron 作业脚本

javascript - 使用 Mongoose 增加子文档键

mongodb - 如何在控制台中从 Mongodb 的表中选择所有行?

node.js - 无法修改 Mongoose 文档搜索中的对象

node.js - 自定义(用户友好)ValidatorError 消息