25. 25Query
1.WHERE
# select * from users where name = 'user1'> db.users.find({name:"user1"}){ "_id" : ObjectId("4c4528a0b55f2224d447e4b0"), "name" : "user1", "age" : 21, "sex" : 1}
# select * from users where name = 'user1' and age = 21> db.users.find({name:"user1", age:21}){ "_id" : ObjectId("4c4528a0b55f2224d447e4b0"), "name" : "user1", "age" : 21, "sex" : 1}
2.FIELDS
# select name, age from users where age = 21
> db.users.find({age:21}, {'name':1, 'age':1}){ "_id" : ObjectId("4c452c343d48c8f284b388e0"), "name" : "user1", "age" : 21 }
# select name, age from users> db.users.find({}, {'name':1, 'age':1})
3.SORT# select * from users order by age> db.users.find().sort({age:1})# select * from users order by sex asce, age desc> db.users.find().sort({sex:1, age:-1})MongoDB操作
26. 264.SLICE
# select * from users skip 2 limit 3
> db.users.find().skip(2).limit(3)
Conditional Operators# select * from users where sex = 1 and age > 23 and age < 28
> db.users.find({sex:1, age:{$gt:23, $lt:28}})比较操作包括:$gt (>)、$lt (<)、$gte (>=)、$lte(<=)、$ne (!=)
5. IN# select * from users where age in (23, 26, 32)
> db.users.find({age:{$in:[23,26,32]}})对应的操作符有 $nin (not in)。6.COUNT# select count(*) from users where age > 30
> db.users.find({age:{$gt:30}}).count()
7.OR# select * from users where age = 25 or age = 28> db.users.find({$or:[{age:25}, {age:28}]})# select * from users where age <= 23 or age >= 33
db.users.find({$or:[{age:{$lte:23}}, {age:{$gte:33}}]})MongoDB操作
27. 27MongoDB操作 Update可直接用类似 T-SQL 条件表达式更新,或用 Save() 更新从数据库返回到文档对象。# update users set age = 100, sex = 0 where name = 'user1‘
> db.users.update({name:"user1"}, {$set:{age:100, sex:0}}) update() 有几个参数需要注意。
db.collection.update(criteria, objNew, upsert, mult)
criteria: 需要被更新的条件表达式objNew: 更新表达式upsert: 如目标记录不存在,是否插入新文档。multi: 是否更新多个文档。
# update users set age = age + 10
> db.users.update({}, {$inc:{age:10}}, false, true)
# update users set age = age + 10, sex = 1 where name = 'user1'
> db.users.update({name:"user1"}, {$inc:{age:10}, $set:{sex:1}})
Removeremove() 用于删除单个或全部文档,删除后的文档无法恢复。
> id = db.users.findOne({name:"user2"})._idObjectId("4c4508818c4a1e0bf570460f")> db.users.remove(id)//移除name='use2'的行
> db.users.remove()//移除所有
28. 28Distinct
> db.colors.distinct('name')
[ "blue", "green", "orange", "purple", "red", "yellow" ]
Group#SELECT name, sum(marks) FROM user where name='foo' GROUP BY name>db.user.group({key : {‘name’ : true},cond: {‘name’ : ‘foo’},reduce: function(obj,prev) { prev.msum += obj.marks; },initial: {msum : 0}});
Index// single ascending
db.colors.ensureIndex({name: 1})
// unique
db.colors.ensureIndex({email: 1}, {unique: true})
// single descending
db.colors.ensureIndex({createdat: -1})
// compound
> db.colors.ensureIndex({name: 1, createdat: -1})MongoDB操作
29. 29Similar Data Types
30. 30关系型数据库的存储方式:MongoDB操作
31. 31MongoDB的存储方式:EmbeddedMongoDB操作
32. 32One to Many
>db.news.insert({
title:'油价上涨,伤不起啊~',
author:'zhangsan',
date:'2012-3-21',
uid:[1,2,3,4]
tag:["油价","中国","伤不起"]
});