首页 > 开发 > NodeJS > 正文

mongodb其中一个collection字段拆分成新collection的问题?

2017-09-08 17:11:35  来源:网友分享

mongodb建库的时候是这么建的:
test---collection
{

"_id" : ObjectId("5987fabbb48f868e50acf8ca"),"地址" : "上实地产","状态(在用、废弃、闲置)" : "在用","附加信息" : 101547,"所属类别" : "单位","ID" : NumberLong(300000131613),"jingwei" : "120.485833,36.106991,上实地产,120.486493,36.107104,上实地产,120.487171,36.107046,上实地产,120.487364,36.106383,上实地产,120.48736,36.105858,上实地产"

}
我已经上面这种结构拆成,用户地理位置查询: fid就是 test- 中的_id
geo--collection
{

"_id" : ObjectId("59959a4ea007718916839e81"),"fid" : "5987fabbb48f868e50acf8ca","coordinates" : [     120.487171,     36.107046]

}

/ 2 /
{

"_id" : ObjectId("59959a4ea007718916839e82"),"fid" : "5987fabbb48f868e50acf8ca","coordinates" : [     120.487364,     36.106383]

}

/ 3 /
{

"_id" : ObjectId("59959a4ea007718916839e83"),"fid" : "5987fabbb48f868e50acf8ca","coordinates" : [     120.48736,     36.105858]

}

/ 4 /
{

"_id" : ObjectId("59959a4ea007718916839e87"),"fid" : "5987fabbb48f868e50acf8ca","coordinates" : [     120.486493,     36.107104]

}

/ 5 /
{

"_id" : ObjectId("59959a4ea007718916839e9c"),"fid" : "5987fabbb48f868e50acf8ca","coordinates" : [     120.485833,     36.106991]

}

请问,fid能不能转换成ObjId,我的思路是通过地理位置查询得到fid,然后通过fid得到test表中的相关信息.

解决方案

建Schema的时候设置类型了吗?

{    fid:Schema.Types.ObjectId}

另外
可以看看mongoose的关联查询
建Schema的时候设置关联
fid: [{ type: Schema.Types.ObjectId, ref: 'test' }]
然后查询

geo.findOne(条件).populate("test").exec(function(err,data){    console.log(data);})

可以直接查出下面 关联的数据直接就在fid里面:

 "_id" : ObjectId("59959a4ea007718916839e9c"),"fid" : [{    "_id" : ObjectId("5987fabbb48f868e50acf8ca"),    "地址" : "上实地产",    "状态(在用、废弃、闲置)" : "在用",    "附加信息" : 101547,    "所属类别" : "单位",    "ID" : NumberLong(300000131613),    "jingwei" : "120.485833,36.106991,上实地产,    120.486493,36.107104,上实地产,    120.487171,36.107046,上实地产,    120.487364,36.106383,上实地产,    120.48736,36.105858,上实地产"    }],"coordinates" : [     120.485833,     36.106991]