|
接着前一篇文章,下面主要介绍一下MongoDB中常用的find操作。
先打开MongoDB shell,通过下面一组命令插入一些数据。
1 post1 = {"title":"learn MongoDB", "author":"Wilber", "date":new Date(), "score":90}
2 post2 = {"title":"learn English", "author":"Will", "date":new Date(), "score":95}
3 post3 = {"title":"learn C#", "author":"Li", "date":new Date(), "score":80}
4 post4 = {"title":"learn SQL", "author":"July", "date":new Date(), "score":70}
5 post5 = {"title":"learn Node", "author":"Wilber", "date":new Date(), "score":93}
6 db.blog.posts.insert(post1)
7 db.blog.posts.insert(post2)
8 db.blog.posts.insert(post3)
9 db.blog.posts.insert(post4)
10 db.blog.posts.insert(post5)
11
12 users1 = ["Wilber", "Will", "June"]
13 users2 = ["Will", "July", "Wilber"]
14 users3 = ["James", "Jack", "Will"]
15 db.blog.users.insert({"users":users1})
16 db.blog.users.insert({"users":users2})
17 db.blog.users.insert({"users":users3})
find(arg1,arg2)简介
find查询会返回一个Collection中文档的子集。关于find的两个参数,arg1表示匹配条件,arg2可以指定要返回的键。
直接上例子,对于arg2,可以通过设置值为0,来控制那些键不要显示
1 > db.blog.posts.find({"author":"Will"})
2 { "_id" : ObjectId("5479c9f2421b7f1536cfb208"), "title" : "learn English", "author" : "Will", "date" : ISODate("2014-11-
3 29T13:28:17.959Z"), "score" : 95 }
4 > db.blog.posts.find({}, {"title":1, "score":1})
5 { "_id" : ObjectId("5479c9f2421b7f1536cfb207"), "title" : "learn MongoDB", "score" : 90 }
6 { "_id" : ObjectId("5479c9f2421b7f1536cfb208"), "title" : "learn English", "score" : 95 }
7 { "_id" : ObjectId("5479c9f2421b7f1536cfb209"), "title" : "learn C#", "score" : 80 }
8 { "_id" : ObjectId("5479c9f2421b7f1536cfb20a"), "title" : "learn SQL", "score" : 70 }
9 { "_id" : ObjectId("5479c9f4421b7f1536cfb20b"), "title" : "learn Node", "score" : 93 }
10 > db.blog.posts.find({}, {"date": 0})
11 { "_id" : ObjectId("5479c9f2421b7f1536cfb207"), "title" : "learn MongoDB", "author" : "Wilber", "score" : 90 }
12 { "_id" : ObjectId("5479c9f2421b7f1536cfb208"), "title" : "learn English", "author" : "Will", "score" : 95 }
13 { "_id" : ObjectId("5479c9f2421b7f1536cfb209"), "title" : "learn C#", "author" : "Li", "score" : 80 }
14 { "_id" : ObjectId("5479c9f2421b7f1536cfb20a"), "title" : "learn SQL", "author" : "July", "score" : 70 }
15 { "_id" : ObjectId("5479c9f4421b7f1536cfb20b"), "title" : "learn Node", "author" : "Wilber", "score" : 93 }
常用查询条件
比较条件:$gt,$gte,$lt,$lte,$ne
1 > db.blog.posts.find({"score":{"$gte":90,"$lt":95}})
2 { "_id" : ObjectId("5479c9f2421b7f1536cfb207"), "title" : "learn MongoDB", "author" : "Wilber", "date" : ISODate("2014-1
3 1-29T13:28:17.939Z"), "score" : 90 }
4 { "_id" : ObjectId("5479c9f4421b7f1536cfb20b"), "title" : "learn Node", "author" : "Wilber", "date" : ISODate("2014-11-2
5 9T13:28:17.999Z"), "score" : 93 }
6 > db.blog.posts.find({"author":{"$ne":"July"}})
7 { "_id" : ObjectId("5479c9f2421b7f1536cfb207"), "title" : "learn MongoDB", "author" : "Wilber", "date" : ISODate("2014-1
8 1-29T13:28:17.939Z"), "score" : 90 }
9 { "_id" : ObjectId("5479c9f2421b7f1536cfb208"), "title" : "learn English", "author" : "Will", "date" : ISODate("2014-11-
10 29T13:28:17.959Z"), "score" : 95 }
11 { "_id" : ObjectId("5479c9f2421b7f1536cfb209"), "title" : "learn C#", "author" : "Li", "date" : ISODate("2014-11-29T13:2
12 8:17.979Z"), "score" : 80 }
13 { "_id" : ObjectId("5479c9f4421b7f1536cfb20b"), "title" : "learn Node", "author" : "Wilber", "date" : ISODate("2014-11-2
14 9T13:28:17.999Z"), "score" : 93 }
15 >
包含条件:$in,$nin
1 > db.blog.posts.find({"author":{"$in":["Wilber","Will"]}})
2 { "_id" : ObjectId("5479c9f2421b7f1536cfb207"), "title" : "learn MongoDB", "author" : "Wilber", "date" : ISODate("2014-1
3 1-29T13:28:17.939Z"), "score" : 90 }
4 { "_id" : ObjectId("5479c9f2421b7f1536cfb208"), "title" : "learn English", "author" : "Will", "date" : ISODate("2014-11-
5 29T13:28:17.959Z"), "score" : 95 }
6 { "_id" : ObjectId("5479c9f4421b7f1536cfb20b"), "title" : "learn Node", "author" : "Wilber", "date" : ISODate("2014-11-2
7 9T13:28:17.999Z"), "score" : 93 }
8 > db.blog.posts.find({"author":{"$nin":["Wilber","Will"]}})
9 { "_id" : ObjectId("5479c9f2421b7f1536cfb209"), "title" : "learn C#", "author" : "Li", "date" : ISODate("2014-11-29T13:2
10 8:17.979Z"), "score" : 80 }
11 { "_id" : ObjectId("5479c9f2421b7f1536cfb20a"), "title" : "learn SQL", "author" : "July", "date" : ISODate("2014-11-29T1
12 3:28:17.989Z"), "score" : 70 }
13 >
或操作:$or
1 > db.blog.posts.find({"$or":[{"author":"Wilber"}, {"score":{"$gt":90}}]})
2 { "_id" : ObjectId("5479c9f2421b7f1536cfb207"), "title" : "learn MongoDB", "author" : "Wilber", "date" : ISODate("2014-1
3 1-29T13:28:17.939Z"), "score" : 90 }
4 { "_id" : ObjectId("5479c9f2421b7f1536cfb208"), "title" : "learn English", "author" : "Will", "date" : ISODate("2014-11-
5 29T13:28:17.959Z"), "score" : 95 }
6 { "_id" : ObjectId("5479c9f4421b7f1536cfb20b"), "title" : "learn Node", "author" : "Wilber", "date" : ISODate("2014-11-2
7 9T13:28:17.999Z"), "score" : 93 }
8 >
limit(),skip(),sort()
1 > db.blog.posts.find().limit(2)
2 { "_id" : ObjectId("5479c9f2421b7f1536cfb207"), "title" : "learn MongoDB", "author" : "Wilber", "date" : ISODate("2014-1
3 1-29T13:28:17.939Z"), "score" : 90 }
4 { "_id" : ObjectId("5479c9f2421b7f1536cfb208"), "title" : "learn English", "author" : "Will", "date" : ISODate("2014-11-
5 29T13:28:17.959Z"), "score" : 95 }
6 > db.blog.posts.find().skip(1)
7 { "_id" : ObjectId("5479c9f2421b7f1536cfb208"), "title" : "learn English", "author" : "Will", "date" : ISODate("2014-11-
8 29T13:28:17.959Z"), "score" : 95 }
9 { "_id" : ObjectId("5479c9f2421b7f1536cfb209"), "title" : "learn C#", "author" : "Li", "date" : ISODate("2014-11-29T13:2
10 8:17.979Z"), "score" : 80 }
11 { "_id" : ObjectId("5479c9f2421b7f1536cfb20a"), "title" : "learn SQL", "author" : "July", "date" : ISODate("2014-11-29T1
12 3:28:17.989Z"), "score" : 70 }
13 { "_id" : ObjectId("5479c9f4421b7f1536cfb20b"), "title" : "learn Node", "author" : "Wilber", "date" : ISODate("2014-11-2
14 9T13:28:17.999Z"), "score" : 93 }
15 > db.blog.posts.find().sort({"athor":1,"score":-1})
16 { "_id" : ObjectId("5479c9f2421b7f1536cfb208"), "title" : "learn English", "author" : "Will", "date" : ISODate("2014-11-
17 29T13:28:17.959Z"), "score" : 95 }
18 { "_id" : ObjectId("5479c9f4421b7f1536cfb20b"), "title" : "learn Node", "author" : "Wilber", "date" : ISODate("2014-11-2
19 9T13:28:17.999Z"), "score" : 93 }
20 { "_id" : ObjectId("5479c9f2421b7f1536cfb207"), "title" : "learn MongoDB", "author" : "Wilber", "date" : ISODate("2014-1
21 1-29T13:28:17.939Z"), "score" : 90 }
22 { "_id" : ObjectId("5479c9f2421b7f1536cfb209"), "title" : "learn C#", "author" : "Li", "date" : ISODate("2014-11-29T13:2
23 8:17.979Z"), "score" : 80 }
24 { "_id" : ObjectId("5479c9f2421b7f1536cfb20a"), "title" : "learn SQL", "author" : "July", "date" : ISODate("2014-11-29T1
25 3:28:17.989Z"), "score" : 70 }
26 >
数组的查询
- $all:通过多个元素匹配数组
- 支持“键.下标”方式的匹配
- 支持$size的方式匹配
1 > db.blog.users.find({"users":"Will"})
2 { "_id" : ObjectId("5479d03d421b7f1536cfb20c"), "users" : [ "Wilber", "Will", "June" ] }
3 { "_id" : ObjectId("5479d03d421b7f1536cfb20d"), "users" : [ "Will", "July", "Wilber" ] }
4 { "_id" : ObjectId("5479d03d421b7f1536cfb20e"), "users" : [ "James", "Jack", "Will" ] }
5 > db.blog.users.find({"users": {"$all": ["Wilber", "Will"]}})
6 { "_id" : ObjectId("5479d03d421b7f1536cfb20c"), "users" : [ "Wilber", "Will", "June" ] }
7 { "_id" : ObjectId("5479d03d421b7f1536cfb20d"), "users" : [ "Will", "July", "Wilber" ] }
8 > db.blog.users.find({"users": ["Wilber", "Will"]})
9 > db.blog.users.find({"users.2":"Will"})
10 { "_id" : ObjectId("5479d03d421b7f1536cfb20e"), "users" : [ "James", "Jack", "Will" ] }
11 > db.blog.users.find({"users":{"$size":3}})
12 { "_id" : ObjectId("5479d03d421b7f1536cfb20c"), "users" : [ "Wilber", "Will", "June" ] }
13 { "_id" : ObjectId("5479d03d421b7f1536cfb20d"), "users" : [ "Will", "July", "Wilber" ] }
14 { "_id" : ObjectId("5479d03d421b7f1536cfb20e"), "users" : [ "James", "Jack", "Will" ] }
15 >
null的含义
1 > post5.z = null
2 null
3 > db.blog.posts.update({"title":"learn Node"}, post5)
4 > db.blog.posts.find({"z":null})
5 { "_id" : ObjectId("5479c9f2421b7f1536cfb207"), "title" : "learn MongoDB", "author" : "Wilber", "date" : ISODate("2014-1
6 1-29T13:28:17.939Z"), "score" : 90 }
7 { "_id" : ObjectId("5479c9f2421b7f1536cfb208"), "title" : "learn English", "author" : "Will", "date" : ISODate("2014-11-
8 29T13:28:17.959Z"), "score" : 95 }
9 { "_id" : ObjectId("5479c9f2421b7f1536cfb209"), "title" : "learn C#", "author" : "Li", "date" : ISODate("2014-11-29T13:2
10 8:17.979Z"), "score" : 80 }
11 { "_id" : ObjectId("5479c9f2421b7f1536cfb20a"), "title" : "learn SQL", "author" : "July", "date" : ISODate("2014-11-29T1
12 3:28:17.989Z"), "score" : 70 }
13 { "_id" : ObjectId("5479c9f4421b7f1536cfb20b"), "title" : "learn Node", "author" : "Wilber", "date" : ISODate("2014-11-2
14 9T13:28:17.999Z"), "score" : 93, "z" : null }
15 > db.blog.posts.find({"z":{"$in":[null], "$exists": true}})
16 { "_id" : ObjectId("5479c9f4421b7f1536cfb20b"), "title" : "learn Node", "author" : "Wilber", "date" : ISODate("2014-11-2
17 9T13:28:17.999Z"), "score" : 93, "z" : null }
18 >
Ps:可以通过以下链接的到例子中的shell命令。
http://files.iyunv.com/wilber2013/find.js |
|