MongoDB学习笔记四—增删改文档下

发布时间:2017-2-23 22:02:04 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"MongoDB学习笔记四—增删改文档下 ",主要涉及到MongoDB学习笔记四—增删改文档下 方面的内容,对于MongoDB学习笔记四—增删改文档下 感兴趣的同学可以参考一下。

$slice

如果希望数组的最大长度是固定的,那么可以将 $slice 和 $push 组合在一起使用,就可以保证数组不会超出设定好的最大长度。$slice 的值必须是负整数。

假设$slice的值为10,如果$push 后的数组的元素个数小于10,那么所有元素都会保留。反之,只有最后那10个元素会保留。因此,$slice 可以用来在文档中创建一个队列。

db.class.insert({"班级":"1班"})

WriteResult({ "nInserted" : 1 })
> db.class.update(
... {"班级":"1班"},
... {"$push":{"students":{
... "$each":["zs","ls","ww"],
... "$slice":-5}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.class.findOne()
{
        "_id" : ObjectId("5854b5a0e7d717fcb974637b"),
        "班级" : "1班",
        "students" : [
                "zs",
                "ls",
                "ww"
        ]
}

> db.class.update(
...  {"班级":"1班"},
...  {"$push":{"students":{
... "$each":["yyb","rhr","www","qqq","eee","rrr"],
... "$slice":-5}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.class.findOne()
{
        "_id" : ObjectId("5854b5a0e7d717fcb974637b"),
        "班级" : "1班",
        "students" : [
                "rhr",
                "www",
                "qqq",
                "eee",
                "rrr"
        ]
}
> 

也可以在清理元素之前使用$sort,只要向数组中添加子对象就需清理,先排序后保留指定的个数。

> db.class.update({},{ "班级" : "一班"})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
>  db.class.update(
...  {"班级":"一班"},
... {"$push":{"students":
...  {"$each":[{"name":"aaa","age":1},{"name":"bbb","age":2},{"name":"ccc","age":3}],
...  "$slice":-2,
...  "$sort":{"age":-1}}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.class.findOne()
{
        "_id" : ObjectId("5854b5a0e7d717fcb974637b"),
        "班级" : "一班",
        "students" : [
                {
                        "name" : "bbb",
                        "age" : 2
                },
                {
                        "name" : "aaa",
                        "age" : 1

上一篇:android之模拟器更新底层
下一篇:VBA验证工作表是否存在

相关文章

相关评论