$退出階段
根據mongodb檔案
| $出 | 將聚合管道的結果檔案寫入集合。要使用 $out 階段,它必須是管道中的最后一個階段。 |
|---|
在$出階段可以正常使用和撰寫新的集合,我使用的附加功能
.append({ $out: "aggr_out" })
把它放在最后一個階段。
目前的行為
- 將新集合保存到資料庫
- 在
callback函式中回傳一個空陣列
預期行為
- 回傳聚合結果
Node.js、Mongoose 和 MongoDB 的版本
- node.js v14.17.3 (LTS)
- 貓鼬v5.13.13
- 資料庫
- 資料庫版本v4.0.23
- git 版本:07c6611b38d2aacbdb1846b688db70b3273170fb
- 搭建環境:
- 分發版:debian92
- 調度:x86_64
- target_arch:x86_64
代碼
![貓鼬聚合回傳空陣列 []?](https://img.uj5u.com/2021/11/26/903711d826d943af9b548eb15b3a3ee2.png)
uj5u.com熱心網友回復:
這是預期的行為;即,當您$out在聚合查詢中使用階段時,查詢結果將寫入$out. 并且,查詢回傳一個空游標。
例如,拿一個帶有檔案的集合:
{ _id: 1, stuff: [ "bananas", "whales" ] }
查詢:
var cur = db.collection.aggregate([
{ $out: "new_collection" }
])
當您運行此查詢(在mongoshell 中)時,控制臺輸出是一個空游標(盡管new_collection已創建)。
cur.hasNext()回傳false(表示游標中沒有結果檔案)。
Mongoose 查詢回傳一個陣列(不是游標)。因此,您會在回呼結果值中看到一個空陣列。這是可以預料的。
參考:db.collection.aggregate() - 請參閱退貨部分。
如果管道包含 $out 運算子,aggregate() 回傳一個空游標。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/366485.html
上一篇:向mongodb添加多個專案
