Query for Null or Missing Fields查询空字段或缺少字段

This page provides examples in:本页提供了以下示例:

Different query operators in MongoDB treat null values differently.MongoDB中的不同查询运算符对null值的处理方式不同。

This page provides examples of operations that query for null values using the db.collection.find() method in the mongo shell. 此页面提供了使用mongo shell中的db.collection.find()方法查询null值的操作示例。The examples on this page use the inventory collection. 本页上的示例使用inventory集合。To populate the inventory collection, run the following:要填充inventory集合,请运行以下操作:

This page provides examples of operations that query for null values using MongoDB Compass. 本页提供了使用MongoDB Compass查询null值的操作示例。The examples on this page use the inventory collection. 本页上的示例使用库存集合。Populate the inventory collection with the following documents:使用以下文档填充inventory集合:

This page provides examples of operations that query for null values using the pymongo.collection.Collection.find() method in the PyMongo Python driver. The examples on this page use the inventory collection. 本页上的示例使用inventory集合。To populate the inventory collection, run the following:要填充inventory集合,请运行以下操作:

This page provides examples of operations that query for null values using the com.mongodb.client.MongoCollection.find method in the MongoDB Java Synchronous Driver.本页提供了使用mongodb Java同步驱动程序中的com.mongodb.client.MongoCollection.find方法查询空值的操作示例。

Tip

The driver provides com.mongodb.client.model.Filters helper methods to facilitate the creation of filter documents. 驱动程序提供com.mongodb.client.model.Filters帮助程序方法,以方便创建筛选文档。The examples on this page use these methods to create the filter documents.本页上的示例使用这些方法创建筛选文档。

The examples on this page use the inventory collection. 本页上的示例使用inventory集合。To populate the inventory collection, run the following:要填充inventory集合,请运行以下操作:

This page provides examples of operations that query for null values using the Collection.find() method in the MongoDB Node.js Driver. The examples on this page use the inventory collection. 本页上的示例使用inventory集合。To populate the inventory collection, run the following:要填充inventory集合,请运行以下操作:

This page provides examples of operations that query for null values using the MongoDB\Collection::find() method in the MongoDB PHP Library. The examples on this page use the inventory collection. 本页上的示例使用inventory集合。To populate the inventory collection, run the following:要填充inventory集合,请运行以下操作:

This page provides examples of operations that query for null values using the motor.motor_asyncio.AsyncIOMotorCollection.find() method in the Motor driver. The examples on this page use the inventory collection. 本页上的示例使用inventory集合。To populate the inventory collection, run the following:要填充inventory集合,请运行以下操作:

This page provides examples of operations that query for null values using the com.mongodb.reactivestreams.client.MongoCollection.find method in the MongoDB Java Reactive Streams Driver.此页面提供了使用mongodb Java反应流驱动程序中的com.mongodb.reactivestreams.client.MongoCollection.find方法查询null值的操作示例。

The examples on this page use the inventory collection. 本页上的示例使用inventory集合。To populate the inventory collection, run the following:要填充inventory集合,请运行以下操作:

This page provides examples of operations that query for null values using the MongoCollection.Find() method in the MongoDB C# Driver. The examples on this page use the inventory collection. 本页上的示例使用inventory集合。To populate the inventory collection, run the following:要填充inventory集合,请运行以下操作:

This page provides examples of operations that query for null values using the MongoDB::Collection::find() method in the MongoDB Perl Driver. The examples on this page use the inventory collection. 本页上的示例使用inventory集合。To populate the inventory collection, run the following:要填充inventory集合,请运行以下操作:

This page provides examples of operations that query for null values using the Mongo::Collection#find() method in the MongoDB Ruby Driver. The examples on this page use the inventory collection. 本页上的示例使用inventory集合。To populate the inventory collection, run the following:要填充inventory集合,请运行以下操作:

This page provides examples of operations that query for null values using the collection.find() method in the MongoDB Scala Driver. The examples on this page use the inventory collection. 本页上的示例使用inventory集合。To populate the inventory collection, run the following:要填充inventory集合,请运行以下操作:

This page provides examples of operations that query for null values using the Collection.Find function in the MongoDB Go Driver. The examples on this page use the inventory collection. 本页上的示例使用inventory集合。To populate the inventory collection, run the following:要填充inventory集合,请运行以下操作:

Important

Use None with the PyMongo Python driver to query for null or missing fields in MongoDB.

Important

Use None with the Motor driver to query for null or missing fields in MongoDB.

Important

Use BsonNull.Value with the MongoDB C# driver to query for null or missing fields in MongoDB.

Important

Use undef with the MongoDB Perl driver to query for null or missing fields in MongoDB.

Important

Use nil with the MongoDB Ruby driver to query for null or missing fields in MongoDB.

Important

Use BsonNull() with the MongoDB Scala driver to query for null or missing fields in MongoDB.

Important

Use nil with the MongoDB Go driver to query for null or missing fields in MongoDB.

db.inventory.insertMany([
   { _id: 1, item: null },
   { _id: 2 }
])

You can run the operation in the web shell below:您可以在下面的web shell中运行该操作:

[
   { _id: 1, item: null },
   { _id: 2 }
]

For instructions on inserting documents in MongoDB Compass, see Insert Documents.有关在MongoDB Compass中插入文档的说明,请参阅插入文档

db.inventory.insert_many([{"_id": 1, "item": None}, {"_id": 2}])
collection.insertMany(asList(
        Document.parse("{'_id': 1, 'item': null}"),
        Document.parse("{'_id': 2}")
));
await db.collection('inventory').insertMany([{ _id: 1, item: null }, { _id: 2 }]);
$insertManyResult = $db->inventory->insertMany([
    ['_id' => 1, 'item' => null],
    ['_id' => 2],
]);
await db.inventory.insert_many([{"_id": 1, "item": None}, {"_id": 2}])
Publisher<Success> insertManyPublisher = collection.insertMany(asList(
        Document.parse("{'_id': 1, 'item': null}"),
        Document.parse("{'_id': 2}")
));
var documents = new[]
{
    new BsonDocument { { "_id", 1 }, { "item", BsonNull.Value } },
    new BsonDocument { { "_id", 2 } }
};
collection.InsertMany(documents);
$db->coll("inventory")->insert_many( [ { _id => 1, item => undef }, { _id => 2 } ] );
client[:inventory].insert_many([{ _id: 1, item: nil },
                                { _id: 2 }])
collection.insertMany(Seq(
  Document("""{"_id": 1, "item": null}"""),
  Document("""{"_id": 2}""")
)).execute()
docs := []interface{}{
	bson.D{
		{"_id", 1},
		{"item", nil},
	},
	bson.D{
		{"_id", 2},
	},
}

result, err := coll.InsertMany(context.Background(), docs)

Equality Filter相等筛选器

The { item : null } query matches documents that either contain the item field whose value is null or that do not contain the item field.{ item : null }查询匹配包含值为nullitem字段或不包含item字段的文档。

The { item : null } query matches documents that either contain the item field whose value is null or that do not contain the item field.{ item : null }查询匹配包含值为nullitem字段或不包含item字段的文档。

The { item : None } query matches documents that either contain the item field whose value is null or that do not contain the item field.

The eq("item", null) query matches documents that either contain the item field whose value is null or that do not contain the item field.eq("item", null)查询匹配包含值为nullitem字段或不包含item字段的文档。

The { item : null } query matches documents that either contain the item field whose value is null or that do not contain the item field.{ item : null }查询匹配包含值为nullitem字段或不包含item字段的文档。

The [ item => undef ] query matches documents that either contain the item field whose value is null or that do not contain the item field.

The { item : None } query matches documents that either contain the item field whose value is null or that do not contain the item field.

The eq("item", null) query matches documents that either contain the item field whose value is null or that do not contain the item field.eq("item", null)查询匹配包含值为nullitem字段或不包含item字段的文档。

The Eq("item", BsonNull.Value) query using the FilterDefinitionBuilder.Eq() method matches documents that either contain the item field whose value is null or that do not contain the item field.

The { item => undef } query matches documents that either contain the item field whose value is null or that do not contain the item field.

The { item => nil } query matches documents that either contain the item field whose value is nil or that do not contain the item field.

The equal("item", BsonNull) query matches documents that either contain the item field whose value is null or that do not contain the item field.

The item => nil query matches documents that either contain the item field whose value is nil or that do not contain the item field.

db.inventory.find( { item: null } )

Copy the following query filter document into the query bar and click Find:将以下查询筛选文档复制到查询栏中,然后单击“查找”:

{ item: null }
../../_images/compass-find-null-field.png
cursor = db.inventory.find({"item": None})
FindIterable<Document> findIterable = collection.find(eq("item", null));
const cursor = db.collection('inventory').find({
  item: null
});
$cursor = $db->inventory->find(['item' => null]);
cursor = db.inventory.find({"item": None})
FindPublisher<Document> findPublisher = collection.find(eq("item", null));
var filter = Builders<BsonDocument>.Filter.Eq("item", BsonNull.Value);
var result = collection.Find(filter).ToList();
$cursor = $db->coll("inventory")->find( { item => undef } );
client[:inventory].find(item: nil)
var findObservable = collection.find(equal("item", BsonNull()))
cursor, err := coll.Find(
	context.Background(),
	bson.D{
		{"item", nil},
	})

The query returns both documents in the collection.查询将返回集合中的两个文档。

Type Check类型检查

The { item : { $type: 10 } } query matches only documents that contain the item field whose value is null; i.e. the value of the item field is of BSON Type Null (type number 10) :{ item : { $type: 10 } }查询只匹配包含值为null的item字段的文档;亦即,item字段的值为BSON类型Null(类型编号10):

The { item : { $type: 10 } } query matches only documents that contain the item field whose value is null; i.e. the value of the item field is of BSON Type Null (type number 10) :{ item : { $type: 10 } }查询只匹配包含值为null的item字段的文档;亦即,item字段的值为BSON类型Null(类型编号10):

The { item : { $type: 10 } } query matches only documents that contain the item field whose value is null; i.e. the value of the item field is of BSON Type Null (type number 10) :

The type("item", BsonType.NULL) query matches only documents that contain the item field whose value is null; i.e. the value of the item field is of BSON Type Null (type number 10) :type("item", BsonType.NULL)查询只匹配包含值为NULL的item字段的文档;亦即,item字段的值为BSON类型Null(类型编号10):

The { item : { $type: 10 } } query matches only documents that contain the item field whose value is null; i.e. the value of the item field is of BSON Type Null (type number 10) :{ item : { $type: 10 } }查询只匹配包含值为null的item字段的文档;亦即,item字段的值为BSON类型Null(类型编号10):

The [ item => [ $type => 10 ] ] query matches only documents that contain the item field whose value is null; i.e. the value of the item field is of BSON Type Null (type number 10) :

The { item : { $type: 10 } } query matches only documents that contain the item field whose value is null; i.e. the value of the item field is of BSON Type Null (type number 10) :

The type("item", BsonType.NULL) query matches only documents that contain the item field whose value is null; i.e. the value of the item field is of BSON Type Null (type number 10) :type("item", BsonType.NULL)查询只匹配包含值为NULL的item字段的文档;亦即,item字段的值为BSON类型Null(类型编号10):

The Type("item", BsonType.Null) query using the FilterDefinitionBuilder.Type() method matches only documents that contain the item field whose value is null; i.e. the value of the item field is of BSON Type Null (type number 10) :

The { item => { $type => 10 } } query matches only documents that contain the item field whose value is null; i.e. the value of the item field is of BSON Type Null (type number 10) :

The { item => { $type => 10 } } query matches only documents that contain the item field whose value is null; i.e. the value of the item field is of BSON Type Null (type number 10) :

The following query matches only documents that contain the item field whose value is of BSON Type Null (type number 10) :

db.inventory.find( { item : { $type: 10 } } )

Copy the following query filter document into the query bar and click Find:将以下查询筛选文档复制到查询栏中,然后单击“查找”:

{ item : { $type: 10 } }
../../_images/compass-find-null-type-check.png
cursor = db.inventory.find({"item": {"$type": 10}})
findIterable = collection.find(type("item", BsonType.NULL));
const cursor = db.collection('inventory').find({
  item: { $type: 10 }
});
$cursor = $db->inventory->find(['item' => ['$type' => 10]]);
cursor = db.inventory.find({"item": {"$type": 10}})
findPublisher = collection.find(type("item", BsonType.NULL));
var filter = Builders<BsonDocument>.Filter.Type("item", BsonType.Null);
var result = collection.Find(filter).ToList();
$cursor = $db->coll("inventory")->find( { item => { '$type' => 10 } } );
client[:inventory].find(item: { '$type' => 10 })
findObservable = collection.find(bsonType("item", BsonType.NULL))
cursor, err := coll.Find(
	context.Background(),
	bson.D{
		{"item", bson.D{
			{"$type", 10},
		}},
	})

The query returns only the document where the item field has a value of null.查询仅返回项目字段值为null的文档。

Existence Check存在性检查

The following example queries for documents that do not contain a field. 以下示例查询不包含字段的文档。[1]

The { item : { $exists: false } } query matches documents that do not contain the item field:{ item : { $exists: false } }查询匹配不包含item字段的文档:

The { item : { $exists: false } } query matches documents that do not contain the item field:{ item : { $exists: false } }查询匹配不包含item字段的文档:

The { item : { $exists: False } } query matches documents that do not contain the item field:

The exists("item", false) query matches documents that do not contain the item field:exists("item", false)查询匹配不包含item字段的文档:

The { item : { $exists: false } } query matches documents that do not contain the item field:{ item : { $exists: false } }查询匹配不包含item字段的文档:

The [ item => [ $exists => false ] ] query matches documents that do not contain the item field:

The { item : { $exists: False } } query matches documents that do not contain the item field:

The exists("item", false) query matches documents that do not contain the item field:exists("item", false)查询匹配不包含item字段的文档:

The Exists("item", false) query using the FilterDefinitionBuilder.Exists() method matches documents that do not contain the item field:

The { item => { $exists => false } } query matches documents that do not contain the item field:

The { item => { $exists => false } } query matches documents that do not contain the item field:

The exists("item", exists = false) query matches documents that do not contain the item field:

db.inventory.find( { item : { $exists: false } } )

Copy the following query filter document into the query bar and click Find:将以下查询筛选文档复制到查询栏中,然后单击“查找”:

{ item : { $exists: false } }
../../_images/compass-find-null-existence-check.png
cursor = db.inventory.find({"item": {"$exists": False}})
findIterable = collection.find(exists("item", false));
const cursor = db.collection('inventory').find({
  item: { $exists: false }
});
$cursor = $db->inventory->find(['item' => ['$exists' => false]]);
cursor = db.inventory.find({"item": {"$exists": False}})
findPublisher = collection.find(exists("item", false));
var filter = Builders<BsonDocument>.Filter.Exists("item", false);
var result = collection.Find(filter).ToList();
# For boolean values, use boolean.pm for 'true' and 'false'
$cursor = $db->coll("inventory")->find( { item => { '$exists' => false } } );
client[:inventory].find(item: { '$exists' => false })
findObservable = collection.find(exists("item", exists = false))
cursor, err := coll.Find(
	context.Background(),
	bson.D{
		{"item", bson.D{
			{"$exists", false},
		}},
	})

The query only returns the document that does not contain the item field.查询只返回包含item字段的文档。

See also参阅

Reference documentation for the $type and $exists operators.$type运算符和$exists运算符的参考文档。

[1]Starting in MongoDB 4.2, users can no longer use the query filter $type: 0 as a synonym for $exists:false. 从MongoDB 4.2开始,用户不能再将查询筛选器$type:0用作$exists:false的同义词。To query for null or missing fields, see Query for Null or Missing Fields.要查询空字段或缺少的字段,请参阅查询Null字段或缺少的字段