首页 > 代码库 > MongoDB中常用的find

MongoDB中常用的find

接着前一篇文章,下面主要介绍一下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:212 8:17.979Z"), "score" : 80 }13 { "_id" : ObjectId("5479c9f4421b7f1536cfb20b"), "title" : "learn Node", "author" : "Wilber", "date" : ISODate("2014-11-214 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:210 8:17.979Z"), "score" : 80 }11 { "_id" : ObjectId("5479c9f2421b7f1536cfb20a"), "title" : "learn SQL", "author" : "July", "date" : ISODate("2014-11-29T112 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-13 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-27 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:210 8:17.979Z"), "score" : 80 }11 { "_id" : ObjectId("5479c9f2421b7f1536cfb20a"), "title" : "learn SQL", "author" : "July", "date" : ISODate("2014-11-29T112 3:28:17.989Z"), "score" : 70 }13 { "_id" : ObjectId("5479c9f4421b7f1536cfb20b"), "title" : "learn Node", "author" : "Wilber", "date" : ISODate("2014-11-214 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-219 9T13:28:17.999Z"), "score" : 93 }20 { "_id" : ObjectId("5479c9f2421b7f1536cfb207"), "title" : "learn MongoDB", "author" : "Wilber", "date" : ISODate("2014-121 1-29T13:28:17.939Z"), "score" : 90 }22 { "_id" : ObjectId("5479c9f2421b7f1536cfb209"), "title" : "learn C#", "author" : "Li", "date" : ISODate("2014-11-29T13:223 8:17.979Z"), "score" : 80 }24 { "_id" : ObjectId("5479c9f2421b7f1536cfb20a"), "title" : "learn SQL", "author" : "July", "date" : ISODate("2014-11-29T125 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:210 8:17.979Z"), "score" : 80 }11 { "_id" : ObjectId("5479c9f2421b7f1536cfb20a"), "title" : "learn SQL", "author" : "July", "date" : ISODate("2014-11-29T112 3:28:17.989Z"), "score" : 70 }13 { "_id" : ObjectId("5479c9f4421b7f1536cfb20b"), "title" : "learn Node", "author" : "Wilber", "date" : ISODate("2014-11-214 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-217 9T13:28:17.999Z"), "score" : 93, "z" : null }18 >

 

Ps:可以通过以下链接的到例子中的shell命令。

 http://files.cnblogs.com/wilber2013/find.js

MongoDB中常用的find