当前位置: 首页 > 知识库问答 >
问题:

是否有与mongoose populate()相反的方法?(Mongoose、node.js、express)

孟晋
2023-03-14

我有两个猫鼬方案,一个用于用户,一个用于帖子。

一个用户可以喜欢许多帖子。

最后,我想在客户端呈现用户喜欢的所有帖子,在一个部分,我可以使用填充()方法,在另一个部分,用户不喜欢的帖子,而不创建喜欢的帖子的副本。

我可以使用un填充()方法只获取不喜欢的帖子吗?如果没有,最好的方法是什么?

userScheme = 
   { 
    // some other fields…

    post: {
            type: Schema.Types.ObjectId,
            ref: 'Post'
        }
  }


postScheme = 
   { 
     // some other fields…

     user: {
            type: Schema.Types.ObjectId,
            ref: 'User'
        },
        likes: [
                {
                    type: Schema.Types.ObjectId,
                    ref: 'User'
                }
        ],

}

共有1个答案

向锦
2023-03-14

您可以查询在其likes数组中没有特定用户的所有帖子,即尚未喜欢该用户。参考

Post.find({ likes: { $nin: [user._id] }})
 类似资料:
  • 问题内容: 据我所知,方法是,那是,并且也喜欢,但它们不是存储在数据库中。 但是,我想知道那是和之间的唯一区别。还有其他我想念的东西吗? 问题答案: 实例方法,静态方法或虚拟方法均未存储在数据库中。方法与虚拟函数之间的区别在于,虚拟函数的访问方式类似于属性,方法的调用方式类似于函数。实例与静态实例与虚拟实例之间没有区别,因为在类上具有可访问的虚拟静态属性是没有意义的,但在类上具有某些静态实用程序或

  • 问题内容: Liskov替换原理是SOLID的原理之一。我已经读过几次这个原理,并试图理解它。 这就是我的所作所为, 此原则与类层次结构之间的强行为契约有关。子类型应该能够被超类型替换而不会违反合同。 我也读过其他文章,对这个问题我有些失落。难道方法不违反LSP? 上面链接的文章摘录: 换句话说,当通过对象的基类接口使用对象时,用户仅知道基类的前提条件和后置条件。因此, 派生对象不能期望此类用户遵

  • 问题内容: 我正在使用Mongoose来管理Mongo数据库。我的连接文件非常简单: 然后在我的app.js中 并且“猫鼬”变量在全球范围内可用。我不想使用全局变量(至少不直接使用)。是否有更好的方法通过单例模式或其他方法在节点之间共享数据库连接变量(我正在使用express.js)? 问题答案: 我只是在app.js文件中执行以下操作: 此时,任何需要访问该模型的文件都可以执行以下操作: 最后,

  • 根据方法<code>java.util.concurrent的约定。未来#取消: 此方法返回后,对 isDone 的后续调用将始终返回 true。 Netty的Future接口扩展了它: 所以Netty应该遵守合同。但事实上Netty没有。您可以运行以下示例代码: 控制台应打印: 真 但实际上它打印: 假 以下方法也违反了合同: 我已经在github上创建了一个问题:问题 但是我仍然想在stack

  • 问题内容: Java具有格式字符串的概念,与其他语言的格式字符串非常相似。它用于诸如输出转换之类的JDK方法中。 我想知道在Java中是否有类似于C的输入转换方法? 问题答案: 看一下该站点,它解释了两种使用java中的控制台读取的方法,使用或使用System.in中的经典方法。 以下代码摘自引用的网站: - 问候。

  • 我想知道的是,从一个线程访问一个被其他线程变异(随机)的内存位置的角度来看,锁xchg是否会有类似于mfence的行为。它能保证我得到最新的价值吗?之后的内存读/写指令数? 我困惑的原因是: 8.2.2“不能使用I/O指令、锁定指令或序列化指令对读取或写入进行重新排序。” -英特尔64位开发人员手册第3卷 这是否适用于多个线程? mfence状态: 对在MFENCE指令之前发出的所有“从内存加载”