MongoDB-查询Null和Missing字段

时间:2020-02-23 14:40:52  来源:igfitidea点击:

在此MongoDB教程中,我们将学习查询Null和缺少的字段。

登录到您的MongoDB服务器并插入以下文档。

对于本教程,我将文档插入deliveryAddress集合中。

> db.deliveryAddress.insertMany([
  {
    "addressLine1": "House #1, 2nd Street, 1st Main Road",
    "addressLine2": "Opposite Bakery",
    "city": "Bangalore",
    "state": "KA",
    "country": "India",
    "pincode": "560001",
    "contactphone": "919800000000",
    "contactperson": "John Doe"
  },
  {
    "addressLine1": "House #20, 3rd Street, 5th Main Road",
    "addressLine2": null,
    "city": "Bangalore",
    "state": "KA",
    "country": "India",
    "pincode": "560001",
    "contactperson": "Jane Doe"
  },
  {
    "addressLine1": "House #20, 5th Street, 10th Main Road",
    "addressLine2": null,
    "city": "Bangalore",
    "state": "KA",
    "country": "India",
    "pincode": "560001",
    "contactphone": null,
    "contactperson": "Jim Doe"
  }
])

选择所有具有空字段的文档

在下面的示例中,我们将提取所有具有" addressLine2"字段设置为" null"值的文档。

> db.deliveryAddress.find({ "addressLine2": null }).pretty()

{
  "_id" : ObjectId("5d76170f89ccf6fae0c7974b"),
  "addressLine1" : "House #20, 3rd Street, 5th Main Road",
  "addressLine2" : null,
  "city" : "Bangalore",
  "state" : "KA",
  "country" : "India",
  "pincode" : "560001",
  "contactperson" : "Jane Doe"
}
{
  "_id" : ObjectId("5d76170f89ccf6fae0c7974c"),
  "addressLine1" : "House #20, 5th Street, 10th Main Road",
  "addressLine2" : null,
  "city" : "Bangalore",
  "state" : "KA",
  "country" : "India",
  "pincode" : "560001",
  "contactphone" : null,
  "contactperson" : "Jim Doe"
}

$exists运算符

要检查文档是否包含给定字段,我们使用$exists运算符。

语法

我们使用以下语法来获取确实包含给定字段的给定集合的所有文档。

db.collectionName.find({ field: { $exists: true } })

我们使用以下语法来获取不包含给定字段的给定集合的所有文档。

db.collectionName.find({ field: { $exists: false } })

选择所有没有给定字段的文档

在下面的示例中,我们将获取所有没有" contactphone"字段的文档。

> db.deliveryAddress.find({ "contactphone": { $exists: false } }).pretty()

{
  "_id" : ObjectId("5d76170f89ccf6fae0c7974b"),
  "addressLine1" : "House #20, 3rd Street, 5th Main Road",
  "addressLine2" : null,
  "city" : "Bangalore",
  "state" : "KA",
  "country" : "India",
  "pincode" : "560001",
  "contactperson" : "Jane Doe"
}