本文主要分三个部分介绍mongDB:mongoDB基础语法、windows下用js操作mongoDB、常用操作总结。(默认已经下载安装好mongodb)
一、mongoDB基础语法
1、连接数据库
win+R,cmd到控制台,复制mongo的安装目录,cd到其bin目录下,以便执行后续操作。
mongo url:port/db_name
url可以是本地的localhost(127.0.0.1)也可以是远程的数据库;port默认为27017;db_name是你要连接的数据库名
2、创建数据库
use db_name //db_name是你要创建的数据库名字,一开始创建的数据库不显示,只有插入数据以后才显示。
3、创建表(集合)
语法格式:
db.createCollection(name, options)
参数说明:
- name: 要创建的集合名称
- options: 可选参数, 指定有关内存大小及索引的选项
options 可以是如下参数:
字段 | 类型 | 描述 |
---|---|---|
capped | 布尔 | (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。 当该值为 true 时,必须指定 size 参数。 |
autoIndexId | 布尔 | (可选)如为 true,自动在 _id 字段创建索引。默认为 false。 |
size | 数值 | (可选)为固定集合指定一个最大值(以字节计)。 如果 capped 为 true,也需要指定该字段。 |
max | 数值 | (可选)指定固定集合中包含文档的最大数量。 |
在插入文档时,MongoDB 首先检查固定集合的 size 字段,然后检查 max 字段。
db.createCollection("mycol", { capped : true, autoIndexId : true, size :
6142800, max : 10000 } )
4、插入数据
db.collection_name.insert({"name":"张三","sex":"女","age":"20"});
5、查询数据
db.collection_name.find(<query>,<projection>);
第一个是查询条件,第二个是返回结果的字段约束。
6、删除数据
*:特别注意,在Windows 的控制台下写删除数据的js的时候,可能删除数据非常有限,我也不知道问题出在哪里,当我把js放在一个文件里面的时候,再运行 mongo url:port/db_name remove.js的时候,才能完整删除符合条件的语句。
我的业务需求是这样的:统计相同字段下重复的数据条数,删选出大于1的数据,(也即为重复的数据),如何删除其中一条。
有三个地方需要注意:如何判断重不重复,如何筛选大于1的数据,如何删除一条,这三个问题分别对应:聚合统计、条件操作符、删除语句。
var c=db.collection_name.aggregate(
[
{
$group: {
_id: {
book: "$book",
version:"$version",
code:"$code",
name:"$name",
pages:"$pages"
},
total: { $sum :1 }//计算同一个book、version、code、name、pages下的数据条数
}//按照book、version、code、name聚合
},
{ $sort : { pages: -1} },//按照pages降序排序,如果是1表示升序
{ $match: { total: { $gt: 1 } } }//筛选total数据条数大于等于2的数据
]
)
之后再对c中的数据进行操作。注意如果将rs 的结果返回为“_id”中的数据时:在其后加上.map(function(el){return el._id})即可。
for (var i = 0;i <c.length ; i++) {
var q="";
var book="'book':'"+c[i]["book"]+"',";
var version="'version':'"+c[i]["version"]+"',";
var code="'code':'"+c[i]["code"]+"',";
var name="'name':'"+c[i]["name"]+"',";
var pages="'pages':"+c[i]["pages"][0];
q="{"+book+version+code+name+"}";
db.units.remove(q,1);//q相当于条件查询,1表示只删除第一条。
}//将得到的数据做查询后删除一条。
二、windows下用js操作mongoDB
进入mongo 的bin目录下,运行mongo url:port/db_name 回车,如何键入js代码;
或者运行mongo url:port/db_name search.js 回车,即可执行你自己的js。