MongoDB、Mongoose 和复合 _id

Posted

技术标签:

【中文标题】MongoDB、Mongoose 和复合 _id【英文标题】:MongoDB, Mongoose, and composite _id 【发布时间】:2015-04-24 07:17:05 【问题描述】:

Mongodb 和 Mongoose.js 的新手。

我创建了以下架构和模型:

var schema = new Schema(
    _id: part1: String, part2: Number,
    name: String
    );
 mongoose.model('myDoc', schema);

我可以保存这个,当我在mongo命令行上查看时,它看起来很好。

但是当我这样做的时候是猫鼬:

myDoc.find(, function(err, recs) 
var rec = recs[0];
console.log('----' + JSON.stringify(rec));
);

我打印出我的对象,但有以下例外:Cast to ObjectId failed for value "[object Object]" at path "_id"

我看到了一些解释,但我不明白我做错了什么,以及我需要如何解决它。

根据 mongodb 文档,_id 可以是 bson 类型。我究竟做错了什么? part1: String, part2: Number 不是 bson 吗?

【问题讨论】:

@JohnnyHK,好的,谢谢,请将其添加为答案。 【参考方案1】:

根据 Mongoose 作者的 this post,Mongoose 尚不支持复合 _id 字段。

【讨论】:

谢谢,我只是使用默认的 mongo _id。而是创建了一个唯一的复杂索引。

以上是关于MongoDB、Mongoose 和复合 _id的主要内容,如果未能解决你的问题,请参考以下文章

FeathersJS 为集合创建复合索引

使用 Mongoose 在投影中包含 Mongodb“_id”字段

使用 Mongoose 在投影中包含 Mongodb“_id”字段

MongoDB中复合_id的预期行为?

无法将值传递到 MongoDB,使用 Node 和 Express,Mongoose

MongoDB索引,是不是可以同时创建普通和复合?