Изучение нескольких методов поиска документов MongoDB с двумя равными полями

В MongoDB поиск документов по определенным критериям — обычная операция. Если вам нужно найти документы, в которых два поля имеют равные значения, вы можете использовать несколько подходов. В этой статье блога мы рассмотрим несколько методов с примерами кода, которые помогут вам эффективно решить эту задачу.

Метод 1: использование оператора $where с функцией JavaScript

db.collection.find({
  $where: function() {
    return this.field1 === this.field2;
  }
});

Метод 2: использование оператора $expr с $eq

db.collection.find({
  $expr: {
    $eq: ["$field1", "$field2"]
  }
});

Метод 3. Применение оператора $redact

db.collection.aggregate([
  {
    $redact: {
      $cond: {
        if: { $eq: ["$field1", "$field2"] },
        then: "$$DESCEND",
        else: "$$PRUNE"
      }
    }
  }
]);

Метод 4: объединение операторов $match и $expr

db.collection.aggregate([
  {
    $match: {
      $expr: {
        $eq: ["$field1", "$field2"]
      }
    }
  }
]);

Метод 5. Использование операторов $project и $eq

db.collection.aggregate([
  {
    $project: {
      field1: 1,
      field2: 1,
      equalFields: { $eq: ["$field1", "$field2"] }
    }
  },
  {
    $match: {
      equalFields: true
    }
  }
]);

В этой статье мы рассмотрели несколько методов поиска документов MongoDB, в которых два поля равны. В зависимости от вашего конкретного варианта использования и предпочтений запроса вы можете выбрать метод, который лучше всего соответствует вашим потребностям. Независимо от того, выберете ли вы оператор $where, оператор $expr, оператор $redact или комбинацию $match и $expr, MongoDB предоставляет гибкие возможности для выполнения сравнения на равенство в нескольких полях. Включив эти методы в запросы MongoDB, вы сможете эффективно извлекать нужные документы из своих коллекций.