如果 MongoDB 中存在可能为 null 的值,如何使用 ORDERBY?
如果存在 NULL 值,则使用 sort() 实现 ORDERBY。
注意 − 由于从 MongoDB v3.2 开始,$orderby 运算符在 mongo shell 中已弃用。请使用 cursor.sort() 代替。
让我们创建一个包含文档的集合 −
> db.demo530.insertOne({"Name":"Chris"});{ "acknowledged" : true, "insertedId" : ObjectId("5e8b2990ef4dcbee04fbbbec") } > db.demo530.insertOne({"Name":null});{ "acknowledged" : true, "insertedId" : ObjectId("5e8b2991ef4dcbee04fbbbed") } > db.demo530.insertOne({"Name":"David"});{ "acknowledged" : true, "insertedId" : ObjectId("5e8b2992ef4dcbee04fbbbee") } > db.demo530.insertOne({"Name":"Adam"});{ "acknowledged" : true, "insertedId" : ObjectId("5e8b2995ef4dcbee04fbbbef") } > db.demo530.insertOne({"Name":null});{ "acknowledged" : true, "insertedId" : ObjectId("5e8b2999ef4dcbee04fbbbf0") } > db.demo530.insertOne({"Name":"Carol"});{ "acknowledged" : true, "insertedId" : ObjectId("5e8b299eef4dcbee04fbbbf1") }
在集合中显示所有文档,方法是使用 find() 方法 −
> db.demo530.find();
这将生成以下输出 −
{ "_id" : ObjectId("5e8b2990ef4dcbee04fbbbec"), "Name" : "Chris" } { "_id" : ObjectId("5e8b2991ef4dcbee04fbbbed"), "Name" : null } { "_id" : ObjectId("5e8b2992ef4dcbee04fbbbee"), "Name" : "David" } { "_id" : ObjectId("5e8b2995ef4dcbee04fbbbef"), "Name" : "Adam" } { "_id" : ObjectId("5e8b2999ef4dcbee04fbbbf0"), "Name" : null } { "_id" : ObjectId("5e8b299eef4dcbee04fbbbf1"), "Name" : "Carol" }
以下查询用于使用 sort() 在 MongoDB 中实现 ORDERBY,即使存在 null 值 −
> db.demo530.aggregate([ ... {$match: {"Name": {$exists: true}}} ... , ... {$sort: { "Name": 1}} ... ]);
这将生成以下输出 −
{ "_id" : ObjectId("5e8b2991ef4dcbee04fbbbed"), "Name" : null } { "_id" : ObjectId("5e8b2999ef4dcbee04fbbbf0"), "Name" : null } { "_id" : ObjectId("5e8b2995ef4dcbee04fbbbef"), "Name" : "Adam" } { "_id" : ObjectId("5e8b299eef4dcbee04fbbbf1"), "Name" : "Carol" } { "_id" : ObjectId("5e8b2990ef4dcbee04fbbbec"), "Name" : "Chris" } { "_id" : ObjectId("5e8b2992ef4dcbee04fbbbee"), "Name" : "David" }
广告