亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MongoDB find 怎么輸出數組?

MongoDB find 怎么輸出數組?

慕無忌1623718 2019-04-19 11:19:54
例如 我find查詢結果是[{uid:1},{uid:2}...]怎么才能直接得到[1,2,3...]
查看完整描述

2 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

更建議在應用端做轉換。原因如下:

  1. 并不知道find結果有多少條,所以轉換出來的數組不確定有多大。極端情況下會超過16MB;

  2. find結果本來是個游標,要進行這個轉換就必須把游標包含的數據全部讀進內存中,對數據庫性能不好;

實在要做可以考慮用Aggregation,但也不能完全達到你的要求,因為返回的必須是對象,而你要的是數組:

db.coll.aggregate([
    {$match: {...}}, //查詢條件
    {$group: {_id: null, array: {$push: "$uid"}}}
]);

結果在array字段中。


查看完整回答
反對 回復 2019-05-19
?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

只要你的數據庫是3.4.4以上的話直接調用$objectToArray 就可以了。


# 數據:

{ "_id" : 2, "item" : "ABC2",  dimensions: { l: 50, w: 25, uom: "cm" } }

{ "_id" : 3, "item" : "XYZ1",  dimensions: { l: 70, w: 75, uom: "cm" } }


# 查詢:

db.inventory.aggregate(

   [

      {

         $project: {

            item: 1,

            dimensions: { $objectToArray: "$dimensions" }

         }

      }

   ]

)


# 結果:

{ "_id" : 2, "item" : "ABC2", "dimensions" : [ { "k" : "l", "v" : 50 }, { "k" : "w", "v" : 25 }, { "k" : "uom", "v" : "cm" } ] }

{ "_id" : 3, "item" : "XYZ1", "dimensions" : [ { "k" : "l", "v" : 70 }, { "k" : "w", "v" : 75 }, { "k" : "uom", "v" : "cm" } ] }


查看完整回答
反對 回復 2019-05-19
  • 2 回答
  • 0 關注
  • 718 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號