Javascript 检查保存文档中所有objectid的数组字段中是否存在objectid的最佳方法是什么?

Javascript 检查保存文档中所有objectid的数组字段中是否存在objectid的最佳方法是什么?,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我有这样一份文件: { subscriptions: [ 5cdf062b4a068f0b30cb9f18, 5afb062b4a068d9b41ab8c55, ... ], _id: 5d6a3d0bead1c01844ec4c75, email: 'papa@example.com', user_name: 'Papa Roche' } 一个用户可以有很多订阅,但我怀疑它是否会达到100万以上。 现在我想检查订阅id是否已经存在。最好的办法是什么?我是使用数组函数在订

我有这样一份文件:

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

一个用户可以有很多订阅,但我怀疑它是否会达到100万以上。
现在我想检查订阅id是否已经存在。最好的办法是什么?我是使用数组函数在订阅内容字段中循环,还是使用mongoose查询数据库并查看字段中是否存在此id?请给出一个示例并稍加详细说明。

您最好重新构造模式,使“订阅”字段的值是一个对象,而不是一个数组。这样,您将对给定的订阅id进行固定时间的查找。因此,您当前拥有的将更改为:

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

您可能最好重新构造模式,使subscriptions字段的值是一个对象,而不是一个数组。这样,您将对给定的订阅id进行固定时间的查找。因此,您当前拥有的将更改为:

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

有一个js方法.includes(),你可以用它来检查id是否存在或者不是很广泛的问题……但总的来说:数据库在查询/搜索方面通常比JavaScript数组函数更快、更有效。@Harmandepsingkalsi well includes()由于某种原因总是返回false,可能与订阅id是mongoose objectId有关。好的,如果你能提供一些id以及你要找的id,也许我们可以进一步检查!有一个js方法.includes(),你可以用它来检查id是否存在或者不是很广泛的问题……但总的来说:数据库在查询/搜索方面通常比JavaScript数组函数更快、更有效。@Harmandepsingkalsi well includes()由于某种原因总是返回false,可能与订阅id是mongoose objectId有关。好的,如果你能提供一些id以及你要找的id,也许我们可以进一步检查!