我有一个现成的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