logo

capped array指数组保持固定的大小,新插入的元素覆盖旧的,MongoDB并无这种类型的数组,但功能上可以做到。

  • 创建一个数组
    db.products.insert({last_viewed:["bike","cd","game","bike","book"]})
    db.products.findOne()
    {
     "_id" : ObjectId("51ff97d233c4f2089347cab6"),
     "last_viewed" : [
         "bike",
         "cd",
         "game",
         "bike",
         "book"
     ]
    }
    
    • 插入一个,弹出一个。
      db.products.update({},{$push: {last_viewed: "skis"}})
      db.products.update({},{$pop: {last_viewed: -1}})
      db.products.findOne()
      {
      "_id" : ObjectId("51ff97d233c4f2089347cab6"),
      "last_viewed" : [
         "cd",
         "game",
         "bike",
         "book",
         "skis"
      ]
      }
      
      这是一种方法,还有另一种,用slice, 更为简洁。
      db.products.update({},{$push:{last_viewed:{$each:["skis"],$slice:-5}}})
      

ccj 于 2 年前 修改
0 回复
需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。