2017-03-10 52 views
1

我試圖在我的貓鼬模式中設置默認數組大小和值,但返回始終顯示爲[],除非文檔實際上有數據。貓鼬設置默認數組大小和值

"transform": { type: [ Number ], default: [0, 0, 0] } 

返回值是:

"transform":[] 

如何配置我的架構,以便它返回:

"transform":[0,0,0] 

: 設置required: true將數據添加到任何新的文件創建。但是,舊文檔不會被更新。

"transform": { type: [ Number ], default: [0, 0, 0], required: true } 

更新 要快速解決我的問題的數據我跑了蒙戈的更新升級使用以下行所有現有文件。

db.getCollection('objects').updateMany(
    { "properties.transform": []}, 
    { $set: { "properties.transform" : [0,0,0] }} 
); 

注:我的變換域是因此"properties.transform"

+1

零被視爲空 – Remario

+0

有無論如何可以覆蓋它嗎?我想我可以使用1,1,1(只是測試,它的工作原理),但它並不理想。 – stuffyjoelab

+0

[爲什麼我的模式不能在貓鼬數組中添加默認值?](http://stackoverflow.com/questions/31845282/why-doesnt-my-schema-to-add-default-values-in -mongoose-arrays) –

回答

1

那麼它要麼你設定要求爲true架構性能的子項。或者爲false,默認爲空。在這種情況下,你不可能有兩種方法是空的或提供一個值。

你可以使用的黑客是這樣的。 只需設置爲true,並在數據輸入最初推零數組。

model.push([0,0,0]); 
+0

明白了,我正在測試以前生成的文檔,我只是運行了默認設置爲0的更新並且要求爲true,並且新文檔已返回[0,0,0] – stuffyjoelab

+1

好看的兄弟!以前生成的文件導致它 – Remario