【发布时间】:2016-02-23 10:19:30
【问题描述】:
我知道 MongoDB 中没有“连接”。我正在尝试将大量文档链接到我的位置集合中的 40,000 多个位置。
我的位置集合具有位置的自定义(阅读:不受我控制)标识符及其对应的纬度/经度坐标。
var Locations = new Schema({
location_id: String,
loc: { //lng, lat: as per mongodb documents
type: [Number],
index: '2d'
}
});
有几个集合具有引用此自定义标识符以匹配纬度和经度的字段。
var MyCollection = new Schema({
location: String,
otherFields: Strings...
});
我对如何最好地解决这个问题有点迷茫。很多帖子都建议通过 Schema 进行链接,但我只看到Schema.Types.ObjectId。这对我来说似乎不切实际,因为我正在导入的数据只有自定义标识符。
我是否可以在MyCollection 中添加另一个字段,并在我上传数据时找到要链接到的正确位置的_id。如果是这样,有人可以指出我完成此任务的正确方向吗?
也许可以以某种方式使用 Map reduce?我对 Mongo 还是有点陌生。
试过
我确实尝试将整个位置数据加载到一个 JS 对象中,然后根据我的其他查询的返回对象检查该对象,将匹配的位置数据注入我的返回对象。这行得通,但速度难以忍受慢。
【问题讨论】:
-
Mongoose 无论如何都会在内部执行两个单独的查询,所以我会说走那条路。