【问题标题】:Find with array of IDs in mongoose在猫鼬中查找 ID 数组
【发布时间】:2020-09-12 01:13:30
【问题描述】:

我用 Express.js 和猫鼬制作了一个 API。 我需要找到 id 包含在数组中的用户。

// the array of ids
const followedIds = follow.map((f) => f.followed);

console.log(followedIds);
// return [ '5ebaf673991fc602045ed47f', '5ebc6fb9af8add09edd842e9' ]

此数组中的所有 ID 都存在。

然后我做:

User.where('_id').in(followedIds).exec()
    .then((followedUser) => {

        console.log('followedUser', followedUser);
        // return []
});

followedUser 应该有两个具有匹配 id 的用户对象。

我该如何解决这个问题?

谢谢

PS:这里有我的用户模型

const mongoose = require('mongoose');

const user = new mongoose.Schema({
    username: { type: String, required: true },
    email: { type: String, required: true },
    password: { type: String, required: true },
    avatar: { type: String, default: '/images/avatar_default.jpg' },
    banner: { type: String, default: '/images/banner_default.jpg' },
    created_at: { type: Date, required: true },
    deleted_at: { type: Date, required: false },
}, { versionKey: false });

module.exports = mongoose.model('user', user);

【问题讨论】:

    标签: javascript api express mongoose


    【解决方案1】:

    .in类似方法

    User.find().where('_id').in(followedIds)
    

    【讨论】:

      【解决方案2】:

      您可以使用$in operator 并向mongo 提供一组ID。例如。您可以从数组中查询具有指定 ID 的用户:

      const followedUsers = await User.find({ _id: { $in: followedIDs } });
      console.log(followedUsers);
      

      但是,请确保您的 followedIDsObjectId 的数组。 MongoDB 将_id 存储为ObjectId,而不是字符串。

      db.inventory.insertMany([
         { item: "journal", qty: 25, status: "A" },
         { item: "notebook", qty: 50, status: "A" },
         { item: "paper", qty: 100, status: "D" },
         { item: "planner", qty: 75, status: "D" },
         { item: "postcard", qty: 45, status: "A" }
      ]);
      
      db.inventory.find({ _id: { $in: [ObjectId("your_id_here")] } });
      

      要从字符串数组生成这样的数组,请使用map

      const followedIDs = yourArrayWithIDAsString.map(ObjectId);
      

      【讨论】:

        猜你喜欢
        • 2017-03-28
        • 2016-05-14
        • 1970-01-01
        • 1970-01-01
        • 2014-03-10
        • 2021-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多