mongodb数据操作(CRUD)

1.数据插入
db.集合名.insert()

操作

> use hk
switched to db hk
> show collections
> db.info.insert({"url":"www.lepu.cn"})
WriteResult({ "nInserted" : 1 })
> db.info.find()
{ "_id" : ObjectId("592bd4324c964b7784cca90f"), "url" : "www.lepu.cn" }

数组插入

db.info.insert([
        {"url":"www.baidu.com"},
        {"url":"www.9888.cn"},
        {"url":"www.a.cn"}
]);

操作

> db.info.insert([
... {"url":"www.baidu.com"},
... {"url":"www.9888.cn"},
... {"url":"www.a.cn"}
... ]);
BulkWriteResult({
        "writeErrors" : [ ],
        "writeConcernErrors" : [ ],
        "nInserted" : 3,
        "nUpserted" : 0,
        "nMatched" : 0,
        "nModified" : 0,
        "nRemoved" : 0,
        "upserted" : [ ]
})
> db.info.find()
{ "_id" : ObjectId("592bd4324c964b7784cca90f"), "url" : "www.lepu.cn" }
{ "_id" : ObjectId("592bd4f84c964b7784cca910"), "url" : "www.baidu.com" }
{ "_id" : ObjectId("592bd4f84c964b7784cca911"), "url" : "www.9888.cn" }
{ "_id" : ObjectId("592bd4f84c964b7784cca912"), "url" : "www.a.cn" }

批量插入

for(var i=0;i<1000;i++){
        db.info.insert({"url":"url->"+i});
}

操作

> for(var i=0;i<1000;i++){
... db.info.insert({"url":"url->"+i});
... }
WriteResult({ "nInserted" : 1 })
> db.info.find()
{ "_id" : ObjectId("592bd4324c964b7784cca90f"), "url" : "www.lepu.cn" }
{ "_id" : ObjectId("592bd4f84c964b7784cca910"), "url" : "www.baidu.com" }
{ "_id" : ObjectId("592bd4f84c964b7784cca911"), "url" : "www.9888.cn" }
{ "_id" : ObjectId("592bd4f84c964b7784cca912"), "url" : "www.a.cn" }
{ "_id" : ObjectId("592bd5bf4c964b7784cca913"), "url" : "url->0" }
{ "_id" : ObjectId("592bd5bf4c964b7784cca914"), "url" : "url->1" }
{ "_id" : ObjectId("592bd5bf4c964b7784cca915"), "url" : "url->2" }
.......................
{ "_id" : ObjectId("592bd5bf4c964b7784cca921"), "url" : "url->14" }
{ "_id" : ObjectId("592bd5bf4c964b7784cca922"), "url" : "url->15" }
Type "it" for more
在数据保存很多的情况下,只会显示20条,按it显示下一页

2.数据查询

关系运算,逻辑运算,数组运算,正则运算等
db.集合名称.find({查询条件},[{显示的字段}])
查询出url为"www.9888.cn"的数据
db.info.find({"url":"www.9888.cn"});
不需要显示的字段设为0,默认都是1

db.info.find({"url":"www.9888.cn"},{"_id":0,"url":1})
> db.info.find({"url":"www.9888.cn"},{"_id":0,"url":1})
{ "url" : "www.9888.cn" }

格式化显示
pretty()

var data={
        "name":"hkui",
        "age":26,
        "hobby":"footbal,music",
        "info":"it码农,哈哈哈哈哈哈哈"
};
db.info.insert(data);

> db.info.find({"name":"hkui"})
{ "_id" : ObjectId("592bda084c964b7784ccacfb"), "name" : "hkui", "age" : 26, "hobby" : "footbal,music", "info" : "it码农,哈哈哈哈哈哈哈" }
> db.info.find({"name":"hkui"}).pretty()
{
        "_id" : ObjectId("592bda084c964b7784ccacfb"),
        "name" : "hkui",
        "age" : 26,
        "hobby" : "footbal,music",
        "info" : "it码农,哈哈哈哈哈哈哈"
}

关系查询
大于($gt)
小于($lt)
小于等于($lte)
大于等于($gte)
不等于($ne)

构造查询数据

db.stu.drop();
db.stu.insert({"name":"张三","sex":"男","age":18,"score":70,"address":"河南"});
db.stu.insert({"name":"李四","sex":"女","age":20,"score":60,"address":"山东"});
db.stu.insert({"name":"王五","sex":"男","age":17,"score":44,"address":"江苏"});
db.stu.insert({"name":"赵六","sex":"男","age":21,"score":80,"address":"山东"});
db.stu.insert({"name":"孙七","sex":"女","age":23,"score":50,"address":"湖北"});
db.stu.insert({"name":"tom","sex":"男","age":24,"score":20,"address":"海南"});
db.stu.insert({"name":"lucy","sex":"女","age":21,"score":62,"address":"浙江"});
db.stu.insert({"name":"jack","sex":"男","age":20,"score":90,"address":"美国"});
db.stu.insert({"name":"smith","sex":"男","age":19,"score":88,"address":"美国"});

db.stu.find({"name":"tom"}).pretty();
db.stu.find({"address":"山东"}).pretty();
age大于20的
db.stu.find({"age":{"$gt":20}}).pretty();
查询姓名不是tom的
db.stu.find({"name":{"$ne":"tom"}}).pretty();

逻辑运算

与($and)
或($or)
非($not,$nor)
查询年龄在18~21
db.stu.find({"age":{"$gte":18,"$lte":21}})
查询年龄小于20或者score>80的
db.stu.find({"$or":
[
    {"age":{"$lt":20}},
    {"score":{"$gt":80}}
]
}).pretty();
取反操作
db.stu.find({"$nor":
[
    {"age":{"$lt":22}},
    {"score":{"$gt":90}}
]
}).pretty();

取模

$mod
{$mod:[数字,余数]}
取出除数是20,,余数为1的
db.stu.find({"age":{"$mod":[20,1]}}).pretty();
范围查询
$in或者$nin
db.stu.find({
 "address":{"$in":["河南","山东"]}
})

 数组查询

针对数组内容,运算符有

$all,$size,$slice,$elemMath

构造数据

db.stus.drop();
db.stus.insert({"name":"hk1","sex":"男","age":18,"score":70,"address":"河南","course_id":[1,2,3,4,5]});
db.stus.insert({"name":"hk2","sex":"女","age":20,"score":60,"address":"山东","course_id":[1,2,3,4]});
db.stus.insert({"name":"hk3","sex":"男","age":17,"score":44,"address":"江苏","course_id":[1,2,3]});
db.stus.insert({"name":"hk4","sex":"男","age":21,"score":80,"address":"山东","course_id":[1,3]});
db.stus.insert({"name":"hk5","sex":"女","age":23,"score":50,"address":"湖北","course_id":[2,3,4]});
db.stus.insert({"name":"tom","sex":"男","age":24,"score":20,"address":"海南","course_id":[1]});
db.stus.insert({"name":"lucy","sex":"女","age":21,"score":62,"address":"浙江","course_id":[3,4]});
db.stus.insert({"name":"jack","sex":"男","age":20,"score":90,"address":"美国","course_id":[1,2,3,4]});
db.stus.insert({"name":"smith","sex":"男","age":19,"score":88,"address":"美国","course_id":[2,4]});

查询同事参加 2,4课程的

db.stus.find({"course_id":{"$all":[2,4]}}).pretty();
db.stus.find({"address":{"$all":["河南","山东"]}}).pretty();
//无结果
db.stus.find({"address":{"$all":["河南"]}}).pretty();
//查出了家是河南的

索引操作(从0 开始)
第二个为4的

db.stus.find({"course_id.1":4}).pretty();
//只参加2门课程的
db.stus.find({"course_id":{"$size":2}}).pretty();
//数组截取
//取前2门
db.stus.find({"age":18},{"course_id":{"$slice":2}}).pretty(); //1,2
//后2门
db.stus.find({"age":18},{"course_id":{"$slice":-2}}).pretty();//4,5

db.stus.find({"age":18},{"course_id":{"$slice":[1,2]}}).pretty();//2,3

db.stus.find({"age":18},{"course_id":{"$slice":[3,1]}}).pretty();//4 //闭合区间,长度

 $elemMatch

数据

db.stus1.drop();
db.stus1.insert({"name":"hk1","sex":"男","age":18,"score":70,"address":"河南","course_id":[1,2,3,4,5],
  "parents":[
        {"name":"hk1_father","job":"程序员","age":50},
        {"name":"hk1_mother","job":"工人","age":45}

    ]
});
db.stus1.insert({"name":"hk2","sex":"女","age":20,"score":60,"address":"山东","course_id":[1,2,3,4],
    "parents":[
        {"name":"hk2_father","job":"教师","age":52},
        {"name":"hk2_mother","job":"程序员","age":45}

    ]
});
db.stus1.insert({"name":"hk3","sex":"男","age":17,"score":44,"address":"江苏","course_id":[1,2,3],
    "parents":[
        {"name":"hk3_father","job":"教授","age":45},
        {"name":"hk3_mother","job":"销售","age":40}

    ]
});
db.stus1.insert({"name":"hk4","sex":"男","age":21,"score":80,"address":"山东","course_id":[1,3]});

查询出age大于18,父母里有是程序员的
db.stus1.find({
    "$and":
        [
            { "age":{"$gt":18}},
            { "parents":{ "$elemMatch":
                    {"job":"程序员"}
                    }
            }
        ]
}).pretty();

查询出age大于18,父母里有是程序员的而且程序员年龄小于50
db.stus1.find({
    "$and":
        [
            { "age":{"$gt":18}},
            { "parents":{ "$elemMatch":
                    {"$and":
                        [{"job":"程序员"},{"age":{"$lt":50}}]
                    }
                    }
            }
        ]
}).pretty();

判断某个字段是否存在 $exists
true表示存在,false表示不存在
判断没有父母信息存在的

db.stus.find({"parents":{"$exists":true}}).pretty();
db.stus.find({"parents":{"$exists":false}}).pretty();

条件过滤
$where

查询年龄大于20的
db.stu.find({"$where":"this.age>20"});
db.stu.find("this.age>20");

每一行进行判断
或者

db.stu.find(function(){
    return this.age>20;
})

或者

db.stu.find({"$where":function(){
        return this.age>20;
}});

复合条件判断

db.stu.find({"$and":[
{"$where":"this.age>20"},
{"$where":"this.age<22"},

]});

缺点把bson变成js代码语法结构,这种方式不方便使用数据库索引机制

时间: 2024-10-04 03:04:55

mongodb数据操作(CRUD)的相关文章

JDBC通用的数据库数据操作[CRUD]封装

package com.lyang.dao; import java.lang.reflect.Field; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.

Atitti.数据操作crud js sdk dataServiceV3设计说明

1. 增加数据1 1.1. 参数哦说明1 2. 查询数据1 2.1. 参数说明2 3. 更新数据2 3.1. 参数说明3 4. 删除3 1. 增加数据 importx("com.attilax/jsbridge/jsb_v7q329.js"); importx("com.attilax/dataService/dataServiceV3q41.js"); function page_load() { var ds3=new dataServiceV3(); ds3.

MongoDB数据操作练习

1.创建一年级的3个班,并随机添加 10 名学生: >for(grade_index in (grade = ['grade_1_1', 'grade_1_2', 'grade_1_3'])) { hobbys=['draw', 'dance', 'running', 'sing', 'football', 'basketball', 'computer', 'python'] for (var i = 1; i <= 10; i++) { db[grade[grade_index]].ins

Mongodb数据库命令端常用操作

查询操作 Mongodb-SpringMvc下Query数据库操作SQL http://blog.csdn.net/xiaohulunb/article/details/27828381 1.查询所有 > db.foo.find() { "_id" : ObjectId("5389aa1df06b88aaa313746a"), "name" : "yiwa", "age" : 25, "us

mongodb常用数据操作

1. shell操作 mongodb默认连接的是test数据库, 输入db,可以看到当前数据库为test, 接下来是常用的数据库操作 ????mongodb存储按照文档方式存储,各种操作均采用json格式串进行, ????????可以理解为. mongodb的集合就是关系数据库的表,集合里面可以装各种类型的数据,包括集合. ? ????show databases:显示数据库以及数据库所占空间. 简写为show dbs; ????use [dbname]: 选择数据库 ????show coll

Mongodb for PHP教程之数据操作

Mongodb的常用操作 参看手册,php官方的http://us2.php.net/manual/en/mongo.manual.php 也可以参看mongodb官方的教程 数据库连接 ⑴默认格式 $m = new Mongo(); //这里采用默认连接本机的27017端口,当然你也可以连接远程主机如                   192.168.0.4:27017,如果端口是27017,端口可以省略 ⑵标准连接 $m = new Mongo("mongodb://${username}

Mongodb DB shell数据操作

shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的. Ø 数据库 1.Help查看命令提示 help db.help(); db.yourColl.help(); db.youColl.find().help(); rs.help(); 2.切换/创建数据库 >use yourDB; 当创建一个集合(table)的时候会自动创建当前数据库 3.查询所有数据库 show dbs; 4.删除当前使用数据库 db.dropDatabas

练习 MongoDB 操作 —— 数据操作(一)

目录 练习 MongoDB 操作 -- 数据操作(一) # 练习增查 练习删除 练习修改 练习分组 练习聚合 练习权限 创建用户 验证用户 查看所有用户 删除用户 练习 MongoDB 操作 -- 数据操作(一) mongodb 更新于 2017-09-19 约 18 分钟 原文链接: https://segmentfault.com/a/1190000011173681 本文的目标是通过大量的示例,来更好的理解如果在Mongodb中进行数据操作: 初入客户端 刚利用 mongod命令进入客户端

Silverlight 2 (beta1)数据操作(6)——使用LINQ to SQL进行数据CRUD操作(下)

Silverlight客户端实现 这个部分主要完成Silverlight客户端的操作,首先引用WCF服务,然后在Page页面中,我们使用DataGrid控件来实现对数据的绑定,另外,添加一个用户控件实现增加.删除.修改操作处理.下面一步一步来实现这些步骤吧. 第一步:引用WCF服务 第二步:添加一个用户控件 第三步:编辑用户控件界面 为了演示方面,我没有做任何的界面美化,仅仅把数据库相应的字段在TextBox上实现双向绑定,即在任何时候都可以同时更新源数据和目标.提供了保存,删除,添加按钮实现数