• MongoDB CRUD 操作手册


    基本操作

    增加

    在MongoDB中通过db.collection.insert()来增加新的数据。

    db.users.insert({username:"Jack",age:30})
    

    操作完成之后会返回一条WriteResult对象,这个对象包含了操作的状态。

    WriteResult({"nInserted" : 1 })
    

    如果插入失败,WriteResult会包含错误信息。

    通过 db.collection.find() 来查找所有插入的文档信息。

    批量增加

    db.collection.insert()支持批量操作。

    可以先创建数组,然后一次性插入。

    var users=
    [
    	{
    		username:"Frank",
    		age:20
    	},
    	{
    		username:"Bob",
    		age:22
    	},
    	{
    		username:"Lucy",
    		age:21
    	}
    ]
    
    db.users.insert(users)
    

    操作完成之后,会返回一个BulkWriteResult对象,来反馈本次操作的相关信息。

    除了以上这种操作,MongoDB(2.6版本之后)还提供了另外一种批量操作Bulk()函数。

    通过db.collection.initializeOrderedBulkOp(),初始化一个Bulk操作块。

    var bulk = db.users.initializeUnorderedBulkOp();
    
    bulk.insert(
    	{
    		username:"James",
    		age:30
    	}
    );
    bulk.insert(
    	{
    		username:"Wade",
    		age:31
    	}
    );
    
    //commit operation
    bulk.execute() 
    

    同样,这个操作也会返回 BulkWriteResult 对象反馈相关信息。

    查询操作

    通过db.collection.find() 可以查到集合下的所有数据。

    db.users.find({})
    db.users.find()
    

    条件查询

    db.users.find({age:10})
    

    使用 $in 关键字选取符合后面列表条件的数据

    db.users.find( { age: { $in: [ 30, 20 ] } } )
    

    多个条件

    db.users.find( { age: 30, username: 'James' } )
    

    当一个条件成立的时候,使用 $or 查询

    db.users.find({
        $or: [ { username: "James", age:30} ]
    })
    

    修改数据

    通过update函数来更新数据,第一个参数去选取需要匹配的数据,然后用 $set 关键字,来更新需要更新的数据字段。最后使用 currentDate来修改这个数据的修改时间。

    db.users.update(
    	{ age:20 },
    	{
    		$set:{
    			age:25
    		},
    		$currentDate : {lastModified:true}
    	}
    )
    

    操作会返回一个WriteResult对象来解释这次操作的状态。

    更新一个嵌套的数据

    db.doc.insert(
    	{
    		bookname:"Rework",
    		detail:{
    			model: "14Q3", 
    			manufacturer: "XYZ Company"	
    		}
    	}
    )
    
    db.doc.update(
    	{ bookname:"Rework" },
    	{ $set:{"details.model": "14Q2"} }
    )
    

    操作会返回一个WriteResult对象来解释这次操作的状态。

    默认情况下,MongoDB只会更新一条数据,如果更新多条数据,需要在更新是指定参数。

    db.users.update(
    	{ age:20 },
    	{
    		$set:{
    			age:25
    		},
    		$currentDate : {lastModified:true}
    	},
    	{ multi: true }
    )
    

    替换数据

    替换数据会替换文档中,除了_id字段之外的所有数据。

    db.users.update(
       { name: "none" },
       {
         name:"Kids",
         age:12
       }
    )
    

    默认情况下,如果update方法没有匹配到任何数据,那么update方法就不会做任何事情。然而使用upsert关键字,那么如果没有匹配到数据,会自动新增一条新的数据到集合中。

    db.users.update(
       { name:"one" },
       {
         name:"Kids",
         age:12
       },
       { upsert : true }
    )
    

    操作会返回一个WriteResult对象来解释这次操作的状态,这里会带有新的数据的id值。

    删除数据

    使用remove()函数删除所有的数据.

    db.users.remove({})
    

    remove()操作比drop()操作更加有效率。

    按条件删除

    db.users.remove({age:30})
    

    只删除查找到的数据中得第一条数据。

    db.users.remove({age:30},true)
    

    有限查询

    返回所有的字段

    db.users.find({age:20})
    

    返回指定的字段

    db.users.find( { age : 20 }, { age:true, username:true } )
    

    默认总是会有_id字段,除非自己特意指定

    db.users.find( { age : 20 }, { age:true, username:true, _id:false } )
    

    除去特定字段,全部返回

    db.users.find( { age : 20 }, { age:false} )
    
  • 相关阅读:
    Java package和import
    2文本
    dotnet学习制表技巧
    视频教程:小型登陆系统(五)
    读书札记:ASP.NET网站管理工具遇到错误。请返回上一页并重试
    视频教程:小型登陆系统(三)
    视频教程:小型登陆系统(四)
    视频教程:小型登陆系统(二)
    视频教程:小型登陆系统(一)
    视频教程:小型登陆系统(完)
  • 原文地址:https://www.cnblogs.com/whthomas/p/mongo-crud.html
Copyright © 2020-2023  润新知