我有这两个简化的模式,我想根据 ip 地址“加入”。
var personSchema = Schema({
name: String,
ip: String
});
var logSchema = Schema({
message: String,
ip: String
});
如果 person._id 是 IP 地址,它会起作用。但这不是我的选择。
目前我已经解决了这个问题,当保存新日志时,我搜索这个人并添加对日志的引用。模式是这样的:
var logSchema = Schema({
message: String,
ip: String,
person: { type: Schema.Types.ObjectId, ref: 'Person' }
});
我读过 Mongoose Populate文档,Document#populated和 Model.populate() .我仍然不确定是否可能。这个例子非常简单,我在日志收集上使用 mapReduce 和分组,因此 population 对我来说很好。
我也读过 Database references在我看来,唯一的选择是根据 _id 进行填充。但它是纯 mongodb,也许还有另一种使用 mongoose 的可能性?
是否可以不基于 _id 字段来填充查询?
最佳答案
MongoDB 不支持连接。所以 .populate
只是进行另一个查询,因此最好的解决方案是手动进行另一个查询。
关于Mongoose - 用其他然后 id 填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15763586/