mongodb,一对多,内嵌文档问题

请问下,我有个用户---》多个地址
我目前把地址用内嵌文档放入用户collection,可是如果要修改地址,内嵌文档没有id怎么办? 内嵌文档怎么实现自增id?

阅读 3.8k
2 个回答

建议用uuid吧, 实现自增id的话要自己程序手动维护写一个自增函数 还麻烦些 只要做到唯一就行 不一定要自增的

新手上路,请多包涵

在mongodb中实现自增长id,有2种方法:

  1. counter collection

db.counters.insert(
   {
      _id: "userid",
      seq: 0
   }
)

function getNextSequence(name) {
   var ret = db.counters.findAndModify(
          {
            query: { _id: name },
            update: { $inc: { seq: 1 } },
            new: true
          }
   );

   return ret.seq;
}

db.users.insert(
   {
     _id: getNextSequence("userid"),
     name: "Sarah C."
   }
)

db.users.insert(
   {
     _id: getNextSequence("userid"),
     name: "Bob D."
   }
)
  1. 用findAndModify()

function getNextSequence(name) {
   var ret = db.counters.findAndModify(
          {
            query: { _id: name },
            update: { $inc: { seq: 1 } },
            new: true,
            upsert: true
          }
   );

   return ret.seq;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进