【问题标题】:Finding Unviewed Users in mongodb在 mongodb 中查找未查看的用户
【发布时间】:2022-06-17 01:15:26
【问题描述】:

我目前有一个帖子集合。在每个帖子上,当用户将其标记为已读时,它会将其用户 _id 推送到帖子文档内的数组中。

然后我尝试阅读所有帖子,并找出哪些用户没有阅读过该文档。我的想法是在循环浏览帖子的同时尝试使用这个 $nin 函数,然后将它们存储在一个新对象中,我可以使用相同的索引号调用该对象。但是,由于对象是字符串格式,我正在努力寻找正确的语法来获取它。

  const allPosts = await Post.find({});
    for (let i = 0; i < allPosts.length; i++) {
    console.log(i)
    const findUsers = await User.find({ _id: { $nin: ObjectID([allPosts[i].posthideuser]) } })
    console.log(findUsers);
}

【问题讨论】:

    标签: javascript node.js mongodb express


    【解决方案1】:

    您正在将整个数组转换为ObjectID,而不是转换单个值。将.map()ObjectId 构造函数一起使用

     const allPosts = await Post.find({});
        for (let i = 0; i < allPosts.length; i++) {
        console.log(i)
        const objIds = allPosts[i].posthideuser.map((x) => new mongoose.Types.ObjectId(x));
        const findUsers = await User.find({ _id: { $nin: objIds } })
        console.log(findUsers);
    }
    
    

    【讨论】:

    • 非常感谢!一旦我添加它正在工作,就会缺少一个 close }。
    • 是的,已编辑。请考虑绿色勾选并投票以完成问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 2017-03-28
    • 1970-01-01
    • 2022-09-27
    • 2018-02-09
    • 1970-01-01
    相关资源
    最近更新 更多