MongoDB数据库中查询数据(下)

在find中,options参数值为一个对象,用来设置查询数据时使用的选项,下面我们来对该参数值对象中可以使用的属性进行介绍:

1. fields; 该属性值为一个对象,该对象中各属性名用来显示指定在查询结果中需要包含或排除的字段。该属性值可以为1或0,当属性值为1时,代表需要在查询结果中包含该字段,当属性值为0时,代表需要在查询结果中排除该字段。
注意:在使用fields属性时,需要统一使用属性值1或属性值0来设置除_id字段之外的所有字段。

首先我们来看下数据库中有哪些数据,如下所示:

下面我们使用fields字段来在查询结果中包含或排除哪些字段,下面是在查询结果中指定只包含 userName: '龙恩'的字段(不单独指定_id字段时,_id字段也默认包含);如下代码:

collection.find({userName:'龙恩'},{fields: {userName: 1}});

所有代码如下:

const mongo = require('mongodb');
const Server = mongo.Server;
const Db = mongo.Db; const server = new Server('localhost', '27017', { auto_reconnect: true });
const db = new Db('dataDb', server, { safe: true }); db.open(function(err, db) {
if (err) {
throw err;
} else {
console.log('成功建立数据库连接');
db.collection('users', function(err, collection) {
if (err) {
throw err;
} else {
// 开始查询集合users
collection.find({userName:'龙恩'},{fields: {userName: 1}}).toArray(function(err, docs) {
if (err) {
throw err;
} else {
console.log(docs);
db.close();
}
});
}
});
}
});

如下图所示:

我们可以单独指定_id字段是否需要包含或删除,如下是我们在查询结果中指定排除_id字段,如下代码:

collection.find({userName:'空智'}, {fields: {userName: 1, _id: 0}});

所有代码如下:

const mongo = require('mongodb');
const Server = mongo.Server;
const Db = mongo.Db; const server = new Server('localhost', '27017', { auto_reconnect: true });
const db = new Db('dataDb', server, { safe: true }); db.open(function(err, db) {
if (err) {
throw err;
} else {
console.log('成功建立数据库连接');
db.collection('users', function(err, collection) {
if (err) {
throw err;
} else {
// 开始查询集合users
collection.find({userName:'空智'}, {fields: {userName: 1, _id: 0}}).toArray(function(err, docs) {
if (err) {
throw err;
} else {
console.log(docs);
db.close();
}
});
}
});
}
});

如下图所示:

如果在fields对象中使用属性值0来设置某些字段,则查询结果将包含除这些字段之外的所有字段。

我们可以先查询  userName="空智"这个字段后,然后通过fields来排除userName这个属性值,因此代码可以改成如下:

collection.find({userName: '空智'}, {fields: {userName: 0}});

所有代码如下所示:

const mongo = require('mongodb');
const Server = mongo.Server;
const Db = mongo.Db; const server = new Server('localhost', '27017', { auto_reconnect: true });
const db = new Db('dataDb', server, { safe: true }); db.open(function(err, db) {
if (err) {
throw err;
} else {
console.log('成功建立数据库连接');
db.collection('users', function(err, collection) {
if (err) {
throw err;
} else {
// 开始查询集合users
collection.find({userName: '空智'}, {fields: {userName: 0}}).toArray(function(err, docs) {
if (err) {
throw err;
} else {
console.log(docs);
db.close();
}
});
}
});
}
});

如下图所示:

2. sort;
该属性是需要用来排序的字段,该属性值可以为一个数组或对象。
2.1 属性值为数组的情况下:
当属性值为一个数组时,该数组就包含两个元素,第一个元素值为用于排序的字段名,第二个元素值可以为1或-1,元素值为1时指定升序排序,元素值为-1时指定降序排序。且每一个元素为数组。
下面代码是通过type字段进行升序排序,price字段降序排序;代码如下:

collection.find({},
{ sort:
[
['type', 1],
['price', -1]
]
}
)

如下所有代码:

const mongo = require('mongodb');
const Server = mongo.Server;
const Db = mongo.Db; const server = new Server('localhost', '27017', { auto_reconnect: true });
const db = new Db('dataDb', server, { safe: true }); db.open(function(err, db) {
if (err) {
throw err;
} else {
console.log('成功建立数据库连接');
db.collection('users', function(err, collection) {
if (err) {
throw err;
} else {
// 开始查询集合users
collection.find({},
{ sort:
[
['type', 1],
['price', -1]
]
}
).toArray(function(err, docs) {
if (err) {
throw err;
} else {
console.log(docs);
db.close();
}
});
}
});
}
});

查询结果如下所示:

2.2 属性值为对象时
当sort属性值为一个对象时,该对象中各属性名为用于排序的字段名,各属性值可以为1或-1,属性值为1时指定升序排序,属性值为-1时指定降序排序。
下面代码是通过type字段进行升序排序,price字段降序排序;代码如下:

collection.find({},{sort: {type: 1, price: -1}});

所有代码还是和上面一样,只是把查询条件换了一下,运行结果和上面一样的。 可以看到属性值为对象时比数组更简单点。

3. limit
该属性是来限定查询结果条数,该属性值为一个整数,用于指定查询结果条数。

我们现在来修改查询的代码,我现在来查询 userName='空智'的其中2条数据,如下代码所示:

collection.find({userName: '空智'}, {limit: 2});

执行结果如下所示:

4. skip
该属性是来限定在从符合查询条件的结果中跳过前面多少条数据的文档,该属性值为一个整数,用于指定跳过的数据文档条数。

首先我们来看下数据库中一共有如下数据,如下所示:

然后我们在查询结果中指定查询 userName = '空智'的字段,数据库中一共有8条 userName='空智'的数据,我们现在跳过前面6条,从第七条开始,如下代码即可:

collection.find({userName: '空智'}, {skip: 6});

运行结果如下所示:

5. explain
该属性是来查看在执行一个find方法查询数据时的详细性能信息,使用该属性后,find方法并不真正执行数据的查询操作,该方法只返回在查询数据时的性能信息。如下代码:

collection.find({},{explain: true})

所有代码如下:

const mongo = require('mongodb');
const Server = mongo.Server;
const Db = mongo.Db; const server = new Server('localhost', '27017', { auto_reconnect: true });
const db = new Db('dataDb', server, { safe: true }); db.open(function(err, db) {
if (err) {
throw err;
} else {
console.log('成功建立数据库连接');
db.collection('users', function(err, collection) {
if (err) {
throw err;
} else {
// 开始查询集合users
collection.find({},{explain: true}).toArray(function(err, docs) {
if (err) {
throw err;
} else {
console.log(docs);
db.close();
}
});
}
});
}
});

如下图所示:

6. raw
该参数值对象中的raw属性来指定在查询数据时是否将二进制BSON数据文档存放在缓存区中,然后将该缓存区作为查询结果进行返回。 如下代码:

collection.find({},{raw: true});

如下图所示:

7. findOne

该方法是从一个集合中查询一条数据文档,当一个集合中存在多条符合查询条件的数据文档时,在默认情况下只返回第一条数据文档。
如下使用:

collection.findOne(selector, [options], callback);

selector 是查询条件,必填项。
options 是查询数据的限定条件。
callback: 用于指定获取查询数据操作结束时执行的回调函数,该回调函数如下所示:

function(err, docs) {}

第一个参数err是为获取数据操作失败时触发的错误对象,第二个参数为查询到的数据文档。如下代码:

collection.findOne({}, function(err, docs){})

所有代码如下:

const mongo = require('mongodb');
const Server = mongo.Server;
const Db = mongo.Db; const server = new Server('localhost', '27017', { auto_reconnect: true });
const db = new Db('dataDb', server, { safe: true }); db.open(function(err, db) {
if (err) {
throw err;
} else {
console.log('成功建立数据库连接');
db.collection('users', function(err, collection) {
if (err) {
throw err;
} else {
// 开始查询集合users
collection.findOne({}, function(err, docs) {
if (err) {
throw err;
} else {
console.log(docs);
db.close();
}
});
}
});
}
});

如下图所示:

MongoDB数据库中查询数据(下)的更多相关文章

  1. 在MongoDB数据库中查询数据(上)

    在MongoDB数据库中查询数据(上) 在MongoDB数据库中,可以使用Collection对象的find方法从一个集合中查询多个数据文档,find方法使用方法如下所示: collection.fi ...

  2. mongodb数据库中插入数据

    mongodb数据库中插入数据 一:connection 访问集合: 在mongodb数据库中,数据是存储在许多数据集合中,可以使用数据库对象的collection方法访问一个集合.该方法使用如下: ...

  3. flask再学习-思考之怎么从数据库中查询数据在页面展示!

    看别人视频觉得很简单,要自己做蒙蔽了!这样子.NO! 1. 流程: 首先要有和数据库连接的驱动!一般有PYMySQL mysqlclient 等 使用扩展Flask-SQLAlchemy 获得orm对 ...

  4. 使用JDBC从数据库中查询数据的方法

    * ResultSet 结果集:封装了使用JDBC 进行查询的结果 * 1. 调用Statement 对象的 executeQuery(sql) 方法可以得到结果集 * 2. ResultSet 返回 ...

  5. 如何将存储在MongoDB数据库中的数据导出到Excel中?

    将MongoDB数据库中的数据导出到Excel中,只需以下几个步骤: (1)首先,打开MongoDB安装目录下的bin文件夹,(C:\Program Files (x86)\MongoDB\Serve ...

  6. JDBC方式从数据库中查询数据并显示

    1.创建数据库表myuser DROP TABLE IF EXISTS `myuser`; CREATE TABLE `myuser` ( `) NOT NULL COMMENT '姓名', `id` ...

  7. 使用JDBC从数据库中查询数据

    * ResultSet 结果集:封装了使用JDBC 进行查询的结果 * 1. 调用Statement 对象的 executeQuery(sql) 方法可以得到结果集 * 2. ResultSet 返回 ...

  8. C#Web从0到1—创建一个web并从VS集成的SQLlocalDB数据库中查询数据

    软件说明: VS2017,腾讯云服务器10元1个月,系统Win2012 R2标准版 第一步:建立第一个网页 建立工程 建好后,可以打开View选项打开项目资源浏览器和工具箱,后文会多次用到这两个版面 ...

  9. SAP 从数据库中查询数据,带有where 条件。

    数据库表 代码 *& Report ZSELECT_DATA_FROM_ZMAST_CUST *&------------------------------------------- ...

随机推荐

  1. Java事件处理机制(深入理解)

    本文是关于Java事件处理机制的梳理,以及有重点的介绍一些注意点,至于基础的概念啥的不多赘述. 一.Java事件处理机制初步介绍(看图理解) 根据下图,结合生活实际,可以得知监护人可以有多个,坏人对小 ...

  2. Java基础——正则表达式

    一.什么是正则表达式 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表通常被用来检索.替换那些符 ...

  3. elasticsearch6.7 05. Document APIs(4)Delete API

    3.Delete API delete API 可以让你删除一个特定id的文档,下面例子删除twitter索引中_doc类型.id为1的文档: DELETE /twitter/_doc/1 返回结果: ...

  4. How to distinguish between strings in heap or literals?

    Question: I have a use case where I can get pointers of strings allocated either in memory or litera ...

  5. 深入理解Java 8 Lambda(语言篇)

    State of Lambda by Brian Goetz 原文链接:http://lucida.me/blog/java-8-lambdas-insideout-language-features ...

  6. PostGIS空间查询

    select * from footprints t where ST_intersects(t.geom,ST_GeomFromGeoJSON('{"type":"Po ...

  7. Linux 学习笔记之超详细基础linux命令 Part 7

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 6----------------- ...

  8. JavaScript大杂烩5 - JavaScript对象的若干问题

    1. 类型检查:instanceof与typeof 这是两个相似的操作符,instanceof用于检测函数的实例类型,主要是在面向对象编程中检查new出来的对象类型,需要注意instanceof是检查 ...

  9. 利用朴素贝叶斯分类算法对搜狐新闻进行分类(python)

    数据来源  https://www.sogou.com/labs/resource/cs.php介绍:来自搜狐新闻2012年6月—7月期间国内,国际,体育,社会,娱乐等18个频道的新闻数据,提供URL ...

  10. mysqlclient and mysql-python安装出错方法

    Collecting mysql-python Using cached https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68d ...