【问题标题】:What is the best way to check if an objectid exists in an array field that holds all the objectids within a document?检查包含文档中所有对象ID的数组字段中是否存在对象ID的最佳方法是什么?
【发布时间】:2020-10-18 18:31:20
【问题描述】:

我有这样的文件:

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

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

【问题讨论】:

  • 有js方法.includes(),你可以用它来检查id是否存在
  • 相当广泛的问题......但总的来说:数据库在查询/搜索方面通常比 JavaScript 数组函数更快、更有效。
  • @HarmandeepSinghKalsi well includes() 出于某种原因总是返回 false,可能与订阅 id 是猫鼬 ob​​jectId 的有关。
  • 好的,如果您可以提供一些 id 以及您要查找的 id,我们可以进一步检查!

标签: javascript node.js mongodb express mongoose


【解决方案1】:

您可能最好重组您的架构,以便订阅字段的值是一个对象,而不是一个数组。这样您就可以不断地查找给定的订阅 ID。所以你现在拥有的会变成:

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

【讨论】:

    猜你喜欢
    • 2011-03-20
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 2020-06-07
    • 1970-01-01
    相关资源
    最近更新 更多