您的位置:首页 > 博客中心 > 数据库 >

MongoDB中常用的find

时间:2022-03-14 03:11

接着前一篇文章,下面主要介绍一下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 >

 

数组的查询

  1. $all:通过多个元素匹配数组
  2. 支持“键.下标”方式的匹配
  3. 支持$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.cnblogs.com/wilber2013/find.js

本类排行

今日推荐

热门手游