📜  mongodb 检查数组非空查询 - Javascript (1)

📅  最后修改于: 2023-12-03 14:44:22.438000             🧑  作者: Mango

MongoDB 检查数组非空查询 - Javascript

在 MongoDB 中,我们可以使用查询语言来检查数组是否非空。这在处理查询结果时非常有用。在 Javascript 中,我们可以使用以下方法来实现这个功能。

方法一 - 内嵌文档方式

我们可以在查询语句中使用 $elemMatch 运算符来查找包含非空数组的文档。以下是一个示例查询:

db.collection.find({arrayField: {$elemMatch: {$exists: true, $ne: []}}})
  • $exists: true:用于检查数组字段是否存在。
  • $ne: []:用于检查数组字段是否不为空。

此外,我们还可以通过添加其他条件来进一步筛选文档。例如,我们可以将以上查询与其他条件进行组合:

db.collection.find({field1: 'value1', arrayField: {$elemMatch: {$exists: true, $ne: []}}})
方法二 - 聚合管道方式

另一个检查非空数组的方法是使用聚合管道。以下是一个示例查询:

db.collection.aggregate([
  {$match: {arrayField: {$exists: true}}},
  {$project: {arrayNotEmpty: {$ne: ['$arrayField', []]}}}, 
  {$match: {arrayNotEmpty: true}}
])
  • $match: {arrayField: {$exists: true}}}:用于筛选包含数组字段的文档。
  • $project: {arrayNotEmpty: {$ne: ['$arrayField', []]}}}:用于将数组字段转换为 true/false 值。
  • $match: {arrayNotEmpty: true}}:用于筛选非空数组的文档。

同样地,我们可以通过添加其他条件来进一步筛选文档。例如,我们可以将以上查询与其他条件进行组合:

db.collection.aggregate([
  {$match: {field1: 'value1', arrayField: {$exists: true}}},
  {$project: {arrayNotEmpty: {$ne: ['$arrayField', []]}}}, 
  {$match: {arrayNotEmpty: true}}
])

以上是两个在 MongoDB 中检查非空数组的方法。根据具体情况,我们可以选择其中一个或两个方法中的任意一个。