mongodb的写入,删除,更新

1. mongodb创建数据库和集合

mongodb数据库和集合的创建是隐式的。

意思是说不用单独写create database 语句。

直接使用use关键词即可。

在bin/mongo shell下运行:

use test;

这样会生成test数据库,如果不写入离开,系统自动删掉。

集合也是隐式的,不用专门指定,直接insert一个文档,会产生一个集合。

2. 文档写入

插入使用insert:

db.user.insert({"name" : "gang"});

user为集合名称,这就写入了一条数据。

3. 文档删除

文档删除使用remove关键词。

db.user.remove();

删除user下面所有的数据。

如果指定删除特定条件的数据,需要给remove加上参数。

db.user.remove({"name" : "gang"});

删除name为gang的所有用户。

4. 文档修改更新

文档更新使用update关键词,

更新具有原子性,若两个更新同时到达服务器,先到的先执行,然后执行另一个。

update有两个参数:

第一个:查询出要更新的文档,第二个修改器modifier,做哪些修改。

1. update更新

update直接可以用第二个参数更新整个文档。

db.user.update({"name" : "gang"}, {"new_name" : "gang"});

查看结果

db.user.find();
{ "_id" : ObjectId("536f5ccd7a37c2e745770ed7"), "new_name" : "gang" }

2. $set和$unset

$set设置一个新值,如果不存在,则创建。

db.user.update({"name" : "gang"}, {"$set" : {"age" : 25}});

新加了一个age选项,使用find查看

db.user.find();
{ "_id" : ObjectId("536f5ccd7a37c2e745770ed7"), "age" : 25, "name" : "gang" }

$unset可以删掉一个key

db.user.update({"name" : "gang"}, {"$unset" : {"age" : 1}});

查看

db.user.find();
{ "_id" : ObjectId("536f5ccd7a37c2e745770ed7"), "name" : "gang" }

3. $inc

$inc用于增加或减少指定的值,不存在则创建。

常用于计数器。

$inc必须作用于整数或浮点数。

db.user.update({"name" : "gang"}, {"$inc" : {"score" : 5}});

如果想减少,则设置为负数。

db.user.update({"name" : "gang"}, {"$inc" : {"score" : -5}});

4. 数组操作

数组操作使用$push压入一条, $pop弹出一条。

db.user.update({"name" : "gang"}, {"$push" : {"subjects" : {"chinese" : 10, "math" : 15}}});

使用$addToSet 处理,会处理重复请求,不存在才会写入。

$pop,从数组中删除一个。

key : 1 从数组末尾删除一个。

key: -1 从数组开始删除一个。

 >db.user.find();
{ "_id" : ObjectId("536f5ccd7a37c2e745770ed7"), "name" : "gang", "age" : [ 1, 2, 3, 4 ] }

>db.user.update({"name" : "gang"}, {"$pop" : {"age" : 1}});

>db.user.find();
{ "_id" : ObjectId("536f5ccd7a37c2e745770ed7"), "age" : [ 1, 2, 3 ], "name" : "gang" }
> db.user.update({"name" : "gang"}, {"$pop" : {"age" : -1}});
> db.user.find();
{ "_id" : ObjectId("536f5ccd7a37c2e745770ed7"), "age" : [ 2, 3 ], "name" : "gang" }

$pull 从数组中删除指定的数据。

> db.user.update({"name" : "gang"}, {"$pull" : {"age" : 2}});
> db.user.find();
{ "_id" : ObjectId("536f5ccd7a37c2e745770ed7"), "age" : [ 3 ], "name" : "gang" }

5. upsert

upsert如果找到匹配条件则更新,不存在则新建一个。

需要将update的第三个参数设置为true。

6. 更新多个文档

update默认是更新一条记录, 如果需要更新多个文档,需要将update的第四个参数设置为true。

地址:http://blog.csdn.net/yonggang7/article/details/25557563

mongodb的写入,删除,更新

时间: 2024-10-10 08:47:45

mongodb的写入,删除,更新的相关文章

MongoDB改动、删除文档的域属性实例

MongoDB改动.删除文档的域属性实例 在站点的开发中,可能最初的设计不合理.或者后期业务的变更,会造成文档结构会有些无用的属性.须要去删除或改动.因为MongoDB 是无 Schema 的,不像关系数据库那样列属性定义在表而非记录中,MongoDB 的集合中的每一个文档能够拥有各自不同的域属性.MongoDB 中使用 db.collections.update 改动集合中若干文档的域属性,使用 $set 添加域.$unset 删除域. 删除集合中全部文档的一个域 db.posts.updat

MongoDB数组修改器更新数据

MongoDB数组修改器更新数据 2013-04-22 10:20:40      我来说两句    来源:姜志福 的BLOG    收藏  我要投稿 MongoDB数组修改器更新数据 这里,我们将了解一下数组修改器.数组,是我们经常看到和使用到的且非常有用的数据结构:它不仅可以通过索进行引用,还可以作为集合来使用.数组修改器,顾名思义,它是用来修改数组的,而不能用来修改整数或者字符串.数组修改器不多,就那么几个,但熟练掌握它后,将给我们带来非常方便的操作.下面,我们来了解一下: > db.us

MongoDB数组修改器更新数据(转)

MongoDB数组修改器更新数据 这里,我们将了解一下数组修改器.数组,是我们经常看到和使用到的且非常有用的数据结构:它不仅可以通过索进行引用,还可以作为集合来使用.数组修改器,顾名思义,它是用来修改数组的,而不能用来修改整数或者字符串.数组修改器不多,就那么几个,但熟练掌握它后,将给我们带来非常方便的操作.下面,我们来了解一下: > db.user.findOne() { "_id" : ObjectId("4ffcb2ed65282ea95f7e3304"

GridView总结二:GridView自带编辑删除更新

GridView自带编辑删除更新逻辑很简单:操作完,重新绑定.总结总结,防止忘记... 效果图: 前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="gridView_bianjidelete.aspx.cs" Inherits="gridView_bianjidelete" %> <!DOCTYPE html> <html

对Java配置文件Properties的读取、写入与更新操作

http://breezylee.iteye.com/blog/1340868 对Java配置文件Properties的读取.写入与更新操作 博客分类: javase properties 对Java配置文件Properties的读取.写入与更新操作注:当前项目路径是String filepath=System.getProperty("user.dir"); 对下面的程序很有用... /*** 实现对Java配置文件Properties的读取.写入与更新操作*/package tes

MongoDB修改、删除文档的域属性实例

MongoDB修改.删除文档的域属性实例 在网站的开发中,可能最初的设计不合理,或者后期业务的变更,会造成文档结构会有些没用的属性,需要去删除或修改,由于MongoDB 是无 Schema 的,不像关系数据库那样列属性定义在表而非记录中,MongoDB 的集合中的每个文档可以拥有各自不同的域属性.MongoDB 中使用 db.collections.update 修改集合中若干文档的... aiyou.com/p/212603aiyou.com/p/212605aiyou.com/p/21260

mysql中max_allowed_packet参数的配置方法(避免大数据写入或者更新失败)

这篇文章主要介绍了mysql中max_allowed_packet参数的配置方法,以及查看max_allowed_packet参数当前值的方法,需要的朋友可以参考下 MySQL根据配置文件会限制Server接受的数据包大小.有时候大的插入和更新会受 max_allowed_packet 参数限制,导致写入或者更新失败. 查看目前配置: 复制代码 代码如下: show VARIABLES like '%max_allowed_packet%'; 显示的结果为: 复制代码 代码如下: +------

iOS_12_tableViewCell的删除更新_红楼梦

最终效果图: Girl.h // // Girl.h // 12_tableView的增删改 // // Created by beyond on 14-7-27. // Copyright (c) 2014年 com.beyond. All rights reserved. // #import <Foundation/Foundation.h> @interface Girl : NSObject // UI控件用weak,字符串用copy,其他对象用strong // 头像图片名 @pr

Java配置文件Properties的读取、写入与更新操作

/** * 实现对Java配置文件Properties的读取.写入与更新操作 */ package test; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream;