• Mongdb操作嵌套文档


    1、一个文档如下

    db.posts.find()
    {
        "_id" : ObjectId("5388162dfc164ee1f39be37f"),
        "title" : "Java Example",
        "content" : "This is a example for Java!",
        "comments" : []
    }

    2、往_id等于"5388162dfc164ee1f39be37f"的文档中的comments插入数据

    db.posts.update({"_id":ObjectId("5388162dfc164ee1f39be37f")},{$push:{"comments":{"content":"Good Article!","author":"Luxh"}}

     再插入一条

    db.posts.update({"_id":ObjectId("5388162dfc164ee1f39be37f")},{$push:{"comments":{"content":"Not bad!","author":"Chuliuxiang"}}})

     结果如下

    db.posts.find()
    
    
    {
        "_id" : ObjectId("5388162dfc164ee1f39be37f"),
        "title" : "Java Example",
        "content" : "This is a example for Java!",
        "comments" : [ 
            {
                "content" : "Good Article!",
                "author" : "Luxh"
            }, 
            {
                "content" : "Not bad!",
                "author" : "Chuliuxiang"
            }
        ]
    }

    3、根据内嵌文档查询

      1)查询出Luxh评论过的文章

    db.posts.find({"comments.author":"Luxh"})
    
    结果如下:
    {
        "_id" : ObjectId("5388162dfc164ee1f39be37f"),
        "title" : "Java Example",
        "content" : "This is a example for Java!",
        "comments" : [ 
            {
                "content" : "Good Article!",
                "author" : "Luxh"
            }, 
            {
                "content" : "Not bad!",
                "author" : "Chuliuxiang"
            }
        ]
    }

      2)查询Luxh评论过的文章,返回指定的键

    db.posts.find({"comments.author":"Luxh"},{"title":1,"content":1})
    
    结果如下:
    
    {
        "_id" : ObjectId("5388162dfc164ee1f39be37f"),
        "title" : "Java Example",
        "content" : "This is a example for Java!"
    }

      _id默认会返回。取消可设置"_id":0

    4、修改

      将author=Luxh评论的内容content修改为"I like it!"

    db.posts.update({"comments.author":"Luxh"},{$set:{"comments.$.content":"I like it!"}})
    
    结果如下:
    {
        "_id" : ObjectId("5388162dfc164ee1f39be37f"),
        "title" : "Java Example",
        "content" : "This is a example for Java!",
        "comments" : [ 
            {
                "content" : "I like it!",
                "author" : "Luxh"
            }, 
            {
                "content" : "Not bad!",
                "author" : "Chuliuxiang"
            }
        ]
    }

    5、删除

      删除comments中author=Luxh的记录

    db.posts.update({},{$pull:{"comments":{"author":"Luxh"}}})
    
    结果如下:
    
    {
        "_id" : ObjectId("5388162dfc164ee1f39be37f"),
        "title" : "Java Example",
        "content" : "This is a example for Java!",
        "comments" : [ 
            {
                "content" : "Not bad!",
                "author" : "Chuliuxiang"
            }
        ]
    }
  • 相关阅读:
    根据指定月份,打印该月份所属的季节
    求出1~100之间,既是3又是7的倍数的自然数出现的次数
    打印所有的水仙花数
    升景坊单间短期出租
    找出1000以内的所有完数
    ssh config host
    shell获取ip
    mongodb sharding 简单部署记录
    tcp转发
    openssl和Java的keytool证书相关的命令总结
  • 原文地址:https://www.cnblogs.com/luxh/p/3760974.html
Copyright © 2020-2023  润新知