我有一個現成的MongoDB集合基本上是看起來像:帆和子文檔的ObjectId()
users: [
{
"_id": ObjectId("56a6f714a2c56f1c3b0f17f1"),
"name": "Daniel",
"phones" : [
{
"_id": ObjectId(""56a78dd1879c40ea63822141"),
"areacode": 333,
"number": 111111111
},
{
"_id": ObjectId(""56a78dd1879c40ea63822141"),
"areacode": 111,
"number": 99999999
}
]
},
{
"_id": ObjectId("56a6f714a2c56f1c3b0f17f1"),
"name": "John",
"phones" : [
{
"_id": ObjectId(""56a78dd1879c40ea63822141"),
"areacode": 333,
"number": 111111111
},
{
"_id": ObjectId(""56a78dd1879c40ea63822141"),
"areacode": 111,
"number": 99999999
}
]
}
]
正如你所看到的,我使用的子文檔對象ID與一個外部涉及此數據收集我們存儲數字的附加信息。所有這些ID都是由Mongoose自動在其他應用程序中自動生成的。
現在,在Waterline中,不存在對子文檔的模式支持,因此在對集合執行find()時,子文檔ObjectId將作爲JSON而不是ID字符串返回。
這導致類似
results: [
{
"id": "56a6f714a2c56f1c3b0f17f1",
"name": "Daniel",
"phones" : [
{
"_id": {
"_bsontype": "ObjectID",
"id": "V§zÐ\u0019}dÒÏ_"
}
"areacode": 333,
"number": 111111111
},
{
"_id": {
"_bsontype": "ObjectID",
"id": "V§zÐ\u0019}dÒÏ_"
}
"areacode": 111,
"number": 99999999
}
]
}
]
貓鼬處理這種優雅,而你總是可以擁有這些標識的可在客戶端進行相關查詢,但水線,並沒有嵌套模式,這似乎成爲另一個死衚衕。
有什麼辦法來解決這個沒有返回之前遍歷整個集合,必須遷移數據庫,更改文件或有正常化的地獄的數據庫?這些數據是由幾個應用程序訪問,並需要保持原樣。
順便說一句,做用.native(搜索),並返回該ID的預期,但隨後如果我不得不使用.native()一個簡單的發現,什麼是具有水線點?使用一些其他的實際上是爲MongoDB設計的ORM,比如Mongoose,會不會更好? – afterxleep