MongoDB 如何對一個集合中的文件排序?


MongoDB 透過 $natural 運算子對一個集合中的文件進行排序。它在文件從 find() 獲取時按原樣儲存該文件。預設排序為 $natural。現在我們來看看語法 −

db.yourCollectionName.find().sort({ "$natural": 1 });

為了理解上述語法,我們用文件建立一個集合。建立帶文件的集合的查詢如下 −

> db.orderDocsDemo.insertOne({"UserScore":87});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9531a316f542d757e2b44b")
}
> db.orderDocsDemo.insertOne({"UserScore":98});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9531a816f542d757e2b44c")
}
> db.orderDocsDemo.insertOne({"UserScore":99});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9531b216f542d757e2b44d")
}
> db.orderDocsDemo.insertOne({"UserScore":67});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9531b716f542d757e2b44e")
}
> db.orderDocsDemo.insertOne({"UserScore":78});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9531bd16f542d757e2b44f")
}
> db.orderDocsDemo.insertOne({"UserScore":91});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9531c416f542d757e2b450")
}
> db.orderDocsDemo.insertOne({"UserScore":86});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9531c816f542d757e2b451")
}

使用 find() 方法從集合中顯示所有文件。查詢如下 −

> db.orderDocsDemo.find();

輸出如下 −

{ "_id" : ObjectId("5c9531a316f542d757e2b44b"), "UserScore" : 87 }
{ "_id" : ObjectId("5c9531a816f542d757e2b44c"), "UserScore" : 98 }
{ "_id" : ObjectId("5c9531b216f542d757e2b44d"), "UserScore" : 99 }
{ "_id" : ObjectId("5c9531b716f542d757e2b44e"), "UserScore" : 67 }
{ "_id" : ObjectId("5c9531bd16f542d757e2b44f"), "UserScore" : 78 }
{ "_id" : ObjectId("5c9531c416f542d757e2b450"), "UserScore" : 91 }
{ "_id" : ObjectId("5c9531c816f542d757e2b451"), "UserScore" : 86 }

以下是針對一個集合對文件進行排序的查詢 −

> db.orderDocsDemo.find().sort({ "$natural": 1 });

輸出如下 −

{ "_id" : ObjectId("5c9531a316f542d757e2b44b"), "UserScore" : 87 }
{ "_id" : ObjectId("5c9531a816f542d757e2b44c"), "UserScore" : 98 }
{ "_id" : ObjectId("5c9531b216f542d757e2b44d"), "UserScore" : 99 }
{ "_id" : ObjectId("5c9531b716f542d757e2b44e"), "UserScore" : 67 }
{ "_id" : ObjectId("5c9531bd16f542d757e2b44f"), "UserScore" : 78 }
{ "_id" : ObjectId("5c9531c416f542d757e2b450"), "UserScore" : 91 }
{ "_id" : ObjectId("5c9531c816f542d757e2b451"), "UserScore" : 86 }

看看上面的示例輸出,我們按插入方式獲取相同的文件。

為了獲取已排序的文件,使用以下查詢 −

> db.orderDocsDemo.find().sort({ "UserScore": 1 });

輸出如下 −

{ "_id" : ObjectId("5c9531b716f542d757e2b44e"), "UserScore" : 67 }
{ "_id" : ObjectId("5c9531bd16f542d757e2b44f"), "UserScore" : 78 }
{ "_id" : ObjectId("5c9531c816f542d757e2b451"), "UserScore" : 86 }
{ "_id" : ObjectId("5c9531a316f542d757e2b44b"), "UserScore" : 87 }
{ "_id" : ObjectId("5c9531c416f542d757e2b450"), "UserScore" : 91 }
{ "_id" : ObjectId("5c9531a816f542d757e2b44c"), "UserScore" : 98 }
{ "_id" : ObjectId("5c9531b216f542d757e2b44d"), "UserScore" : 99 }

更新於: 2019-7-30

56 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始吧
廣告
© . All rights reserved.