【问题标题】:MongoDB: Check if a field is same in all the documents in that collectionMongoDB:检查该集合中所有文档中的字段是否相同
【发布时间】:2022-02-05 14:02:43
【问题描述】:

我如何检查特定字段的值是否在该集合中的所有文档中都相同。

我有一个名为Game 的集合,其中存储了用户的游戏响应,并且在游戏中,逻辑应该检查响应是否全部相等,那么我该怎么做呢?

【问题讨论】:

  • 你尝试过做什么?您想在请求数据时或之后检查它吗?这个问题缺乏大量信息需要回答
  • 我想检查我请求数据的那一刻
  • 那么你想查询所有数据都有特定的答案,或者你想确保所有的数据都有特定的答案?
  • 我想检查游戏响应是否都一样
  • 显示您尝试做的代码以及为什么它不起作用

标签: node.js mongodb mongoose


【解决方案1】:

你需要做相反的事情

find({field : {$ne: expectedValue}})

如果您收到此查询的响应,则说明存在不具有所需值的文档。

【讨论】:

  • 我不知道确切的expectedValue
  • 您可以检查 Steven 的回答,因为它会起作用。
【解决方案2】:

您可以获得该字段的唯一值的计数。如果大于 1,则它们不一样。

您还可以按字段值分组。如果超过 1 条记录,则它们不一样。

const rows = await myCollection.aggregate([
 {
  $group: {
    _id: '$theField'
  }
 }
]).toArray()

if (rows.length === 1){
  // same field value
}

或者在管道中进行计数以节省带宽。

const rows = await myCollection.aggregate([
 {
  $group: {
    _id: '$theField'
  }
 },
 { $count: 'count' }
]).toArray()

if (rows.length && rows[0].count === 1) {
  // same value
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 2020-05-24
    • 2019-12-28
    • 2021-06-04
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    相关资源
    最近更新 更多