• Node.js Video Tutorials

Node.js - MongoDB 限制



MongoDB 中的 `limit()` 方法與 SQL 中的 LIMIT 子句效果類似。它將 `find()` 查詢返回的文件數量限制為指定數量。`limit()` 方法接受一個整數作為引數。如果省略引數,則表示未應用限制。

為了理解 `limit()` 函式的工作方式,我們將使用資料庫中的 orders 集合。可以使用以下程式碼檢索價格大於或等於 10 的文件:

示例

const {MongoClient} = require('mongodb');

async function main(){

   const uri = "mongodb://:27017/";
   const client = new MongoClient(uri);

   try {
      await client.connect();
      await limitdocs(client, "mydb", "orders");
   } finally {
      await client.close();
   }
}

main().catch(console.error);


async function limitdocs(client, dbname, colname){
   var myqry = {numPurchased:{$gte:10}};
   const result = await client.db(dbname).collection(colname).find({"numPurchased":{$gte:10}}).toArray();
   console.log(JSON.stringify(result));
}

輸出

[{"_id":"658d7f3b30a92c8e5018a43a","orderId":201,"custid":301,"prodId":100,"numPurchased":20},{"_id":"658d7f3b30a92c8e5018a43b","orderId":202,"custid":302,"prodId":101,"numPurchased":10},{"_id":"658d7f3b30a92c8e5018a43d","orderId":204,"custid":303,"prodId":103,"numPurchased":15},{"_id":"658d7f3b30a92c8e5018a43e","orderId":205,"custid":303,"prodId":103,"numPurchased":20},{"_id":"658d7f3b30a92c8e5018a441","orderId":208,"custid":301,"prodId":100,"numPurchased":10},{"_id":"658d7f3b30a92c8e5018a442","orderId":209,"custid":303,"prodId":103,"numPurchased":30}] 

現在,我們將 `find()` 查詢返回的結果限制為 1。`limit()` 方法的語法如下:

collection.find(query).limit(number);

將 `limitdocs()` 函式更改為以下程式碼,以獲得數量限制為指定數量的文件。

async function limitdocs(client, dbname, colname){
   var myqry = {numPurchased:{$gte:10}};
   const result = await client.db(dbname).collection(colname).find({"numPurchased":{$gte:10}}).limit(1).toArray();
   console.log(JSON.stringify(result));
}

輸出

[{"_id":"658d7f3b30a92c8e5018a43a","orderId":201,"custid":301,"prodId":100,"numPurchased":20}]

`find()` 查詢從第一次出現開始獲取滿足過濾條件的文件。如果要跳過某些文件,請使用 `skip()` 子句。

collection.find(query).limit(x).skip(y)

`find()` 返回的文件中,只有 x 個文件將填充結果集,其中前 y 個文件將被移除。

以下 `limitdocs()` 函式返回 orders 集合中第二個價格 >= 10 的文件。

async function limitdocs(client, dbname, colname){
   var myqry = {numPurchased:{$gte:10}};
   const result = await client.db(dbname).collection(colname).find({"numPurchased":{$gte:10}}).limit(1).skip(1).toArray();
   console.log(JSON.stringify(result));
}

輸出

[{"_id":"658d7f3b30a92c8e5018a43b","orderId":202,"custid":302,"prodId":101,"numPurchased":10}]
廣告