我有一个架构来添加书籍详细信息我想维护一个名为book_id的用户定义id而不是mongodb _id,
要做到这一点,我正在进行服务调用以查找集合中的总数文件,并将响应增加1,然后分配给book_id
有没有办法只在服务器端进行,就像我们在MySQL中使用自动增量
一样答案 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"
}
)