如果我嘗試添加一些JSON,看起來像這樣:不能用點(關鍵路徑)A型貓鼬字段中添加鍵值:Schema.Types.Mixed
{ 'character.treasure_chests': 1 }
貓鼬有錯誤樹皮像這樣:
[Error: key character.treasure_chests must not contain '.']
這是預期的行爲?
如果我嘗試添加一些JSON,看起來像這樣:不能用點(關鍵路徑)A型貓鼬字段中添加鍵值:Schema.Types.Mixed
{ 'character.treasure_chests': 1 }
貓鼬有錯誤樹皮像這樣:
[Error: key character.treasure_chests must not contain '.']
這是預期的行爲?
這是一個有效的JSON,但無效的Mongoose Schema。由於貓鼬」方法允許路徑導航,如果您有類似
{
'some.path': 'foo',
'some': {
'path': 'bar'
}
}
如果不是因爲這個‘缺點’,像document.get('some.path')
方法不知道得到什麼。
這並不意味着你不能使用點與貓鼬有史以來。您可以將JSON作爲值:
Schema = new mongoose.Schema({
'some': {
'path': {
'json': {} //any js object
}
}
})
Model = mongoose.model(Schema)
document = new Model()
document.some.path.json = {'inner.data': 'foo'}
呦可以通過純document.some.path.json['inner.data']
訪問數據,但你將無法進一步使用document.get()
與路徑參數比'some.path.json'
因爲這架構路徑從貓鼬」的觀點是終奌站。您也將受限於您如何查詢此類字段的方式
所有貓鼬文檔都基於JSON,但它們不是它的超集。
是的。據我所知,有效的JSON沒有點。 你所應該做的是這樣的:
{
"character": {
"treasure_chests": 1
}
}
下面是一個例子:JSON Schema example
我很有信心像:
{"foo.com": 2}
其實是有效的JSON。關鍵只是一個字符串。
http://jsonlint.com/不會抱怨,我可以在任何喜歡的地方愉快地使用它,除非我嘗試將它分配到貓鼬模式(和其他一些地方)中的混合屬性。
你可以看到它在這個litlle提琴工作:http://jsfiddle.net/gBgB6/1/
有時候,我想通過的keyPath存儲的值{「foo.baz」:0},我想作爲一個指針使用mongo文檔之外的JavaScript對象中的一個鍵。我不想將它存儲在蒙戈嵌套形式,但我也不想重新映射它像
{key:"foo.baz",
value: '0'
}
我想了幾次我可能訴諸存儲值表的映射點(。)轉換爲另一個字符。
在我看來,貓鼬是短暫的。我可能會問:)。
[mongo dot notation ambiguity]的可能重複(http://stackoverflow.com/questions/10333540/mongo-dot-notation-ambiguity) – JohnnyHK