MonogDB基本语句—增删改查

MongoDB

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

MonogDB基本语句

// mongodb中有三元素:数据库,集合,文档,其中“集合”就是对应关系数据库中的“表”,“文档”对应“行”。
// <1> insert
// 单条插入
db.person.insert({"name":"abc","age":20})
db.person.insert({"name":"abd","age":22})
db.person.insert({"name":"abcd","age":50})
db.person.insert({"name":"abe","age":19})
db.person.insert({"name":"ace","age":19})
// <2> find
// 我们将数据插入后,肯定是要find出来,不然插了也白插,这里要注意两点:
//
//     ① “_id": 这个字段是数据库默认给我们加的GUID,目的就是保证数据的唯一性。
//     ② 严格的按照Bson的形式书写文档,不过也没关系,错误提示还是很强大的。
db.person.find()
db.person.find({"name":"abc"})
db.person.find({"name":"aaa"})
// 日常开发中,我们玩查询,玩的最多的也就是二类:
//   ①: >, >=, <, <=, !=, =。
//   ②:And,OR,In,NotIn
// 这些操作在mongodb里面都封装好了,下面就一一介绍:
// <1>"$gt", "$gte", "$lt", "$lte", "$ne", "没有特殊关键字",这些跟上面是一一对应的,举几个例子。
db.person.find({"age":{$gt:22}})
db.person.find({"age":{$gte:22}})
db.person.find({"age":{$lt:22}})
db.person.find({"age":{$lte:22}})
db.person.find({"age":{$ne:22}})
db.person.find({"age":22})
// <2> "无关键字“, "$or", "$in","$nin"
// &&
db.person.find({"name":"abc","age":20})
// ||
db.person.find({$or:[{"name":"abc"},{"name":"abd"}]})
db.person.find({$or:[{"name":"abc"},{"age":50}]})
// in 
db.person.find({"name":{$in:["abc","abcd"]}})
// not in 
db.person.find({"name":{$nin:["abc","abcd"]}})
// 在mongodb中还有一个特殊的匹配,那就是“正则表达式”,这玩意威力很强的。
// find name startwith 'a' and endwith 'c'
db.person.find({"name":/^a/,"name":/c$/})
// 有时查询很复杂,很蛋疼,不过没关系,mongodb给我们祭出了大招,它就是$where,为什么这么说,是因为$where中的value
// 就是我们非常熟悉,非常热爱的js来助我们一马平川。
// find name = 'abc'
db.person.find({$where:function(){return this.name == 'abc'}})
// <3> update
// update方法的第一个参数为“查找的条件”,第二个参数为“更新的值”,学过C#,相信还是很好理解的。
// 整体更新
db.person.update({"name":"abc"},{"name":"aaa","age":23})
// 局部更新
db.person.update({"name":"abc"},{$inc:{"age":30}})
db.person.update({"name":"abc"},{$set:{"age":10}})
// upsert
db.person.update({"name":"abf"},{$inc:{"age":1}},true)
// <4> remove操作
// remove中如果不带参数将删除所有数据,呵呵,很危险的操作,在mongodb中是一个不可撤回的操作,三思而后行。
db.person.remove()
db.person.remove({"name":"abcd"})
db.person.find()
db.person.count()
// <5> 聚合
// 1) count
db.person.count()
db.person.count({"age":22})
// 2) distinct
db.person.distinct("age")
// 3) group
/*
key: 这个就是分组的key,我们这里是对年龄分组。
    initial: 每组都分享一个”初始化函数“,特别注意:是每一组,比如这个的age=20的value的list分享一个
    initial函数,age=22同样也分享一个initial函数。
    $reduce: 这个函数的第一个参数是当前的文档对象,第二个参数是上一次function操作的累计对象,第一次
    为initial中的{”perosn“:[]}。有多少个文档, $reduce就会调用多少次。
*/
db.person.group({"key":{"age":true},"initial":{"person":[]},"$reduce":function(cur,prev){prev.person.push(cur.name);}})

你可能感兴趣的:(MongoDB,NoSQL)