今天主要是讲MongoDB的操作,除了CURD,另外还有一些高级性操作.

因为之前已介绍将Mongodb作为windows服务随机启动,进入mongo.exe所在的目录,键入mongo命令.

MongoDB是文档型存储,数据存储格式都是JSON型的,都使用Javascript进行操作,下面就看如何操作.

 

一. Insert操作

mongodb的平替信创 mongodb $nin_c#

 

二. Find操作

为了便于操作,我再加一个条纪录

mongodb的平替信创 mongodb $nin_操作系统_02

 

继续看下面的操作

mongodb的平替信创 mongodb $nin_操作系统_03

 

mongodb的平替信创 mongodb $nin_数据库_04

 

上面的两张图中的$gt,$gte,$lt,$lte,$ne,分别代表>,>=,<,<=,!=的含义.另外还有"$or", "$in","$nin",分别代表Or,In,NotIn,这几个不说了.但好像没有And.

OK,我再加一笔数据再用一个$where关键字,这个相当于where条件语句,并且里面可以有&&,||,!= 这些操作符.


mongodb的平替信创 mongodb $nin_数据库_05

 

好,再看一个,这里面有一个/mongo/,相当于like '%mongo%',另外还有/^mongo/,/mongo^/相当于'mongo%'和'%mongo'

mongodb的平替信创 mongodb $nin_数组_06

 


三. Update操作

db.collection.update(criteria, objNew, upsert, multi)

参数:

criteria - 查询需要更新的项;

objNew - 更新的对象或者 $ operators (例如 $inc) 这样的操作因子

upsert - 是否是 "upsert"; 也就是说如果记录不存在是否插入新的记录,true:插入,false不插入,默认false

multi - 是否所有满足criteria的在整个文档都更新,true:批量更新,false只更新第一条,默认false


主要介绍两个修改器: $inc 和 $set。

mongodb的平替信创 mongodb $nin_mongodb的平替信创_07

 

$inc 只能对数字操作有效,相当于update users set age = age + 10 where username ='tang';

 

mongodb的平替信创 mongodb $nin_操作系统_08

$set当于update users set age = 10 where username ='tang';

另外第三个参数和第四个参数上面已有描述,这里就不再多说了.

 

另外还有以下的操作

$unset

{ $unset : { field : 1} }

删除指定的field.


$push

{ $push : { field : value } }

如果fileld是个数组的话,将value追加到数组中;

如果fileld没有定义,那么就将fileld赋值为数组[value];

如果fileld已经存在但不是数组的话,就会报错!


$pushAll

{ $pushAll : { field : value_array } }


$addToSet

{ $addToSet : { field : value } }

只有当这个value不在这个数组里的时候才会添加valuse到数组中。

主持增加多个值,例如:

{ $addToSet : { a : { $each : [ 3 , 5 , 6 ] } } }


$pop

{ $pop : { field : 1  } }

删除数组中最后一个元素。

同理:

删除数组中第一个元素:

{ $pop : { field : -1  } }

 

四、一些高级操作

  1> count

 

mongodb的平替信创 mongodb $nin_数据库_09

 

  2> distinct

mongodb的平替信创 mongodb $nin_数据库_10

 

  3> gruop

  group 比较复杂,有几个参数需要介绍下

  • key: Fields to group by.
  • reduce: The reduce function aggregates (reduces) the objects iterated. Typical operations of a reduce function include summing and counting. reduce takes two arguments: the current document being iterated over and the aggregation counter object. In the example above, these arguments are named obj and prev.
  • initial: initial value of the aggregation counter object.
  • cond: An optional condition that must be true for a row to be considered. This is essentially a find()
  • finalize: An optional function to be run on each item in the result set just before the item is returned. Can either modify the item (e.g., add an average field given a count and a total) or return a replacement object (returning a new object with just _id and average fields). See jstests/group3.js for examples.



 


 

先看下面的例子

mongodb的平替信创 mongodb $nin_操作系统_11

 

mongodb的平替信创 mongodb $nin_数组_12

 

mongodb的平替信创 mongodb $nin_mongodb的平替信创_13

 

  4> mapReduce

  不多说了,直接上例子

 

mongodb的平替信创 mongodb $nin_mongodb的平替信创_14

 

mongodb的平替信创 mongodb $nin_c#_15

 

mongodb的平替信创 mongodb $nin_c#_16

 

   5>其它一些查询

var single = db.person.find().sort({"name",1}).skip(2).limit(2);

   这是不是跟C# Linq语法Skip(pageSize * (pageIndex - 1)).Take(pageSize)很像,其实是一个意思。

   另外hasNext().forEach();

mongodb的平替信创 mongodb $nin_操作系统_17