MongoDB:查找记录 find(1)

原帖地址

官网:https://docs.mongodb.com/manual/reference/method/db.collection.find/

定义:

db.collection.find(query, projection)

在集合或者视图的文档中进行选择,并且返回一个指向被选中的文档的游标。(原文是:Selects documents in a collection or view and returns a cursor to the selected documents.)

参数 类型 描述
query 文档型 可选。使用查询操作符(参考这里),指定了查询过滤器。 想要返回集合中所有的文档,忽略这个参数,或者传一个空的文档({})。
projection 文档型 可选。制定了匹配查询过滤器,要返回的文档的域。想要返回匹配的文档中的所有域,忽略这个参数。

行为

投影

projection参数决定了哪些域需要被返回。

{ field1: <value>, field2: <value> ... }

<value>可以是:

  • 1 或 true 表示要在返回文档中包含这个域。
  • 0 或 false 表示不包含这个域。
  • 表达式使用了投影操作符(有待解释)。

实例

实例 查找上文test集合中的所有文档。

> db.test.find().pretty()
{
    "_id" : ObjectId("5abb3b5bce69c048be080199"),
    "meta" : {
        "createAt" : ISODate("2018-03-28T06:51:07.579Z"),
        "updateAt" : ISODate("2018-03-28T06:51:07.579Z")
    },
    "a" : "1",
    "b" : "1"
}
{
    "_id" : ObjectId("5abb3b5bce69c048be080120"),
    "meta" : {
        "createAt" : ISODate("2018-03-28T06:51:07.579Z"),
        "updateAt" : ISODate("2018-03-28T06:51:07.579Z")
    },
    "a" : "1",
    "b" : "3"
}

pretty()是用来让展示更加舒适。

实例 查找test集合中的b="3"的记录,这里要注意“3”3是不一样的,这里是要符合js的语法,字符串和数字表示方式是不同的。做一个好的程序员,一定要严谨,而做到了严谨,可以帮你更快地提高,更快地产出,更好地规避错误,其实加快了你的职场发展节奏。

> db.test.find({b: "3"}).pretty()
{
    "_id" : ObjectId("5abb3b5bce69c048be080120"),
    "meta" : {
        "createAt" : ISODate("2018-03-28T06:51:07.579Z"),
        "updateAt" : ISODate("2018-03-28T06:51:07.579Z")
    },
    "a" : "1",
    "b" : "3"
}

可以看到,这次只查出了一条符合条件的记录。

实例 查找test集合中的b=”3”的记录a和b两个域,不要其它域。

> db.test.find({b: "3"}, {a: 1, b: 1}).pretty()
{ "_id" : ObjectId("5abb3b5bce69c048be080120"), "a" : "1", "b" : "3" }

可以看到,没有涉及的域就没有再获取出来,这样在一些情况下是可以节省网络开销和分析成本的,在《高性能MySQL》也是讲过类似的原理,不要大而全地去把所有内容获取回来,对于资源的使用,应该是有规划的、经济地去使用。

posted on 2018-07-02 23:20  chaiyu2002  阅读(103)  评论(0编辑  收藏  举报

导航