簡體   English   中英

mongoose 聚合返回空數組[]?

[英]mongoose Aggregation returns empty array []?

$出階段

根據 mongodb 文檔

$out 將聚合管道的結果文檔寫入集合。 要使用 $out 階段,它必須是管道中的最后一個階段。

$out階段運行良好並編寫新系列,我正在使用append function

.append({ $out: "aggr_out" })

將其置於最后階段。

當前行為

  • 將新集合保存到數據庫
  • callback function 中返回一個空數組

預期行為

  • 返回聚合結果

Node.js、Mongoose 和 MongoDB 的版本

  • node.js v14.17.3 (LTS)
  • mongoose v5.13.13
  • mongoDB
    • 數據庫版本v4.0.23
    • git版本: 07c6611b38d2aacbdb1846b688db70b3273170fb
    • 搭建環境:
      • distmod: debian92
      • 淀粉: x86_64
      • 目標架構: x86_64

代碼總計的

這是預期的行為; 即,當您在聚合查詢中使用$out階段時,查詢結果將寫入$out中指定的集合名稱。 並且,查詢返回一個的 cursor。

例如,獲取一個包含文檔的集合:

{ _id: 1, stuff: [ "bananas", "whales" ] }

查詢:

var cur = db.collection.aggregate([
    { $out: "new_collection" }
])

當您運行此查詢(在mongo shell 中)時,控制台 output 是一個空的 cursor(盡管創建了new_collection )。

cur.hasNext()返回false (表示游標中沒有結果文檔)。

Mongoose 查詢返回一個數組(不是游標)。 因此,您會在回調結果值中看到一個空數組。 這是可以預料的。

參考db.collection.aggregate() - 請參閱返回部分。

如果管道包含 $out 運算符,則 aggregate() 返回一個空的 cursor。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM