首页 > 解决方案 > 检查包含文档中所有对象ID的数组字段中是否存在对象ID的最佳方法是什么?

问题描述

我有这样的文件:

{ 
  subscriptions: [ 5cdf062b4a068f0b30cb9f18, 5afb062b4a068d9b41ab8c55, ... ],
  _id: 5d6a3d0bead1c01844ec4c75,
  email: 'papa@example.com',
  user_name: 'Papa Roche' 
}

一个用户可以有很多订阅,但我怀疑它永远不会超过一百万。现在我想检查订阅 ID 是否已经存在。最好的方法是什么?我是使用数组函数循环订阅字段的内容还是使用猫鼬查询数据库并查看该字段中是否存在此 ID?请举个例子并稍微详细说明一下。

标签: javascriptnode.jsmongodbexpressmongoose

解决方案


您可能会更好地重组您的架构,以便订阅字段的值是一个对象,而不是一个数组。这样您就可以不断地查找给定的订阅 ID。因此,您当前拥有的内容将更改为:

{
  subscriptions: { 5cdf062b4a068f0b30cb9f18: {...subscriptionData}, 5afb062b4a068d9b41ab8c55: {...subscriptionData}, ... },
  _id: 5d6a3d0bead1c01844ec4c75,
  email: 'papa@example.com',
  user_name: 'Papa Roche' 
}

推荐阅读