zoukankan      html  css  js  c++  java
  • 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"
            }
        ]
    }
  • 相关阅读:
    自动映射失效的解决办法
    D方法 自动完成
    怎样处理包含的动态模板
    后台登陆功能的实现 SESSION
    输入框 最简单的样式
    php 添加数据库的几种方法
    php 连接数据库
    array、isset、三元运算符、find()
    foreach、count、explode(对无限级分类的语法注释-显示无限级效果)
    两种常用的启动和关闭MySQL服务
  • 原文地址:https://www.cnblogs.com/luxh/p/3760974.html
Copyright © 2011-2022 走看看