You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Blog ID查询拥有该Blog的Mongoose User文档

查询包含指定Blog ID的用户(Mongoose)

嘿,这个需求其实很容易实现,MongoDB和Mongoose对数组类型的字段有很友好的查询支持,我给你两种常用的写法:

基础查询写法

假设你的Mongoose模型已经定义为User,要查找occasions数组中包含指定Blog ID(比如"ab95848gkdi011ff")的用户,直接用普通的匹配语法就行:

const targetBlogId = "ab95848gkdi011ff";

// 方法1:直接匹配数组包含目标值
User.find({ occasions: targetBlogId })
  .then(users => {
    console.log("符合条件的用户:", users);
  })
  .catch(err => {
    console.error("查询失败:", err);
  });

如果你之后需要同时匹配多个Blog ID,用$in运算符会更灵活,单个ID的场景下也完全适用:

// 方法2:使用$in匹配数组中的任一目标值
User.find({ occasions: { $in: [targetBlogId] } })
  .then(users => {
    console.log("符合条件的用户:", users);
  })
  .catch(err => {
    console.error("查询失败:", err);
  });

Async/Await 写法(更现代的异步风格)

如果你的项目用了async/await,写法会更简洁直观:

async function getUsersWithBlog(targetBlogId) {
  try {
    const matchingUsers = await User.find({ occasions: targetBlogId });
    console.log("找到的用户:", matchingUsers);
    return matchingUsers;
  } catch (error) {
    console.error("查询出错啦:", error);
    throw error; // 可以根据业务需求处理错误
  }
}

// 调用函数
getUsersWithBlog("ab95848gkdi011ff");

额外提示

确保你的User模型里occasions字段是数组类型的定义,比如如果Blog的ID是ObjectId类型:

const userSchema = new mongoose.Schema({
  // 其他字段...
  occasions: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Blog' }]
});

const User = mongoose.model('User', userSchema);

如果是字符串ID的话,就把类型改成[String]就行。

内容的提问来源于stack exchange,提问作者mmouru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 10:37:36