В 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, вы сможете эффективно извлекать нужные документы из своих коллекций.