• 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: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

    作者:田小计划
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    如果觉得不错,请点击推荐关注
  • 相关阅读:
    PC版优酷的一次异常
    颜宁开讲啦谈理性思考
    李彦宏开讲啦谈判断能力
    尝试插入cctv视频
    selenium中quit与close方法的区别
    CodeForces 131C The World is a Theatre(组合数)
    CodeForces 446A DZY Loves Sequences(dp)
    UVA 1631 Locker(密码锁)(dp记忆化搜索)
    UVA 1630 Folding(串折叠)(dp记忆化搜索)
    UVA 1629 Cake slicing(切蛋糕)(dp记忆化搜索)
  • 原文地址:https://www.cnblogs.com/wilber2013/p/4132088.html
Copyright © 2020-2023  润新知