第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用限制時(shí),使用MongoDB獲取文檔總數(shù)

使用限制時(shí),使用MongoDB獲取文檔總數(shù)

catspeake 2019-10-21 11:05:57
我對(duì)優(yōu)化與MongoDB合作的“分頁”解決方案感興趣。我的問題很直接。我通常會(huì)限制使用該limit()功能返回的文檔數(shù)。這迫使我發(fā)出一個(gè)沒有該limit()功能的冗余查詢,以便我也可以捕獲查詢中的文檔總數(shù),因此我可以將其傳遞給客戶端,讓他們知道他們將不得不發(fā)出額外的請(qǐng)求。檢索其余文檔。有沒有一種方法可以將此壓縮為1個(gè)查詢?獲取文檔總數(shù),但同時(shí)僅使用limit()?檢索子集。與我正在解決的問題相比,有沒有其他方法可以考慮這個(gè)問題?
查看完整描述

3 回答

?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊

Mongodb 3.4引入了$facet聚合


它在同一組輸入文檔的單個(gè)階段中處理多個(gè)聚合管道。


使用$facet和$group可以找到的文檔,$limit并可以獲得總數(shù)。


您可以在mongodb 3.4中使用以下聚合


db.collection.aggregate([

  { "$facet": {

    "totalData": [

      { "$match": { }},

      { "$skip": 10 },

      { "$limit": 10 }

    ],

    "totalCount": [

      { "$group": {

        "_id": null,

        "count": { "$sum": 1 }

      }}

    ]

  }}

])

即使您可以使用  $countmongodb 3.6中引入的聚合。


您可以在mongodb 3.6中使用以下聚合


db.collection.aggregate([

  { "$facet": {

    "totalData": [

      { "$match": { }},

      { "$skip": 10 },

      { "$limit": 10 }

    ],

    "totalCount": [

      { "$count": "count" }

    ]

  }}

])


查看完整回答
反對(duì) 回復(fù) 2019-10-21
?
當(dāng)年話下

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊

時(shí)代變了,我相信你能達(dá)到什么OP是通過聚合與要求$sort,$group和$project。對(duì)于我的系統(tǒng),我還需要從users集合中獲取一些用戶信息。希望這也可以回答有關(guān)此問題。下面是一個(gè)聚合管道。最后三個(gè)對(duì)象(排序,組和項(xiàng)目)是處理總計(jì)數(shù),然后提供分頁功能的對(duì)象。


db.posts.aggregate([

  { $match: { public: true },

  { $lookup: {

    from: 'users',

    localField: 'userId',

    foreignField: 'userId',

    as: 'userInfo'

  } },

  { $project: {

    postId: 1,

    title: 1,

    description: 1

    updated: 1,

    userInfo: {

      $let: {

        vars: {

          firstUser: {

            $arrayElemAt: ['$userInfo', 0]

          }

        },

        in: {

          username: '$$firstUser.username'

        }

      }

    }

  } },

  { $sort: { updated: -1 } },

  { $group: {

    _id: null,

    postCount: { $sum: 1 },

    posts: {

      $push: '$$ROOT'

    }

  } },

  { $project: {

    _id: 0,

    postCount: 1,

    posts: {

      $slice: [

        '$posts',

        currentPage ? (currentPage - 1) * RESULTS_PER_PAGE : 0,

        RESULTS_PER_PAGE

      ]

    }

  } }

])


查看完整回答
反對(duì) 回復(fù) 2019-10-21
  • 3 回答
  • 0 關(guān)注
  • 1600 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)