如何在mongodb而不是_id中创建用户定义的id

时间:2015-09-22 08:23:52

标签: node.js mongodb

我有一个架构来添加书籍详细信息我想维护一个名为book_id的用户定义id而不是mongodb _id,

要做到这一点,我正在进行服务调用以查找集合中的总数文件,并将响应增加1,然后分配给book_id

有没有办法只在服务器端进行,就像我们在MySQL中使用自动增量

一样

1 个答案:

答案 0 :(得分:1)

您可以定义自己的_id模式。您还可以将增量值添加到mongodb集合的_id字段中。但你不能使用任何字段而不是_id。因为mongodb关心_id以防止重复。 mongodb的方法与rdbms不同。但是如果你想使用book_id,你可以用作一个字段。但是mongodb集合总是有_id字段。

作为答案,您可以阅读this文件。

同样在here你可以找到官方的mongodb序列/自动增量信息。

您可以在mongo shell上应用此代码。

db.book_counters.insert(
{
  book_id: "bookid",
  seq: 0
}
) 

function getNextSequence(book) {
 var ret = db.book_counters.findAndModify(
      {
        query: { book_id: book },
        update: { $inc: { seq: 1 } },
        new: true
      }
 );

return ret.seq;
}

db.book.insert(
{
 book_id: getNextSequence("bookid"),
 book: "Harry Potter"
}
)

db.book.insert(
 {
 book_id: getNextSequence("bookid"),
 book: "LOTR"
}
)