MongoDB数据库中查询数据(下)
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数据库中查询数据(下)的更多相关文章
- 在MongoDB数据库中查询数据(上)
在MongoDB数据库中查询数据(上) 在MongoDB数据库中,可以使用Collection对象的find方法从一个集合中查询多个数据文档,find方法使用方法如下所示: collection.fi ...
- mongodb数据库中插入数据
mongodb数据库中插入数据 一:connection 访问集合: 在mongodb数据库中,数据是存储在许多数据集合中,可以使用数据库对象的collection方法访问一个集合.该方法使用如下: ...
- flask再学习-思考之怎么从数据库中查询数据在页面展示!
看别人视频觉得很简单,要自己做蒙蔽了!这样子.NO! 1. 流程: 首先要有和数据库连接的驱动!一般有PYMySQL mysqlclient 等 使用扩展Flask-SQLAlchemy 获得orm对 ...
- 使用JDBC从数据库中查询数据的方法
* ResultSet 结果集:封装了使用JDBC 进行查询的结果 * 1. 调用Statement 对象的 executeQuery(sql) 方法可以得到结果集 * 2. ResultSet 返回 ...
- 如何将存储在MongoDB数据库中的数据导出到Excel中?
将MongoDB数据库中的数据导出到Excel中,只需以下几个步骤: (1)首先,打开MongoDB安装目录下的bin文件夹,(C:\Program Files (x86)\MongoDB\Serve ...
- JDBC方式从数据库中查询数据并显示
1.创建数据库表myuser DROP TABLE IF EXISTS `myuser`; CREATE TABLE `myuser` ( `) NOT NULL COMMENT '姓名', `id` ...
- 使用JDBC从数据库中查询数据
* ResultSet 结果集:封装了使用JDBC 进行查询的结果 * 1. 调用Statement 对象的 executeQuery(sql) 方法可以得到结果集 * 2. ResultSet 返回 ...
- C#Web从0到1—创建一个web并从VS集成的SQLlocalDB数据库中查询数据
软件说明: VS2017,腾讯云服务器10元1个月,系统Win2012 R2标准版 第一步:建立第一个网页 建立工程 建好后,可以打开View选项打开项目资源浏览器和工具箱,后文会多次用到这两个版面 ...
- SAP 从数据库中查询数据,带有where 条件。
数据库表 代码 *& Report ZSELECT_DATA_FROM_ZMAST_CUST *&------------------------------------------- ...
随机推荐
- oracle与mysql
『创业团队最佳选择是Oracle+MongoDB,而不是MySQL』,当深蓝在QQ群里抛出这样的观点的时候,就像是在马蜂窝里丢了一串鞭炮一样热闹起来. 创业者甲: 开什么玩笑,Oracle要收钱的,太 ...
- Maven的pom.xml文件详解【转载】
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- 内网访问已经启动的vue项目
1. 项目本机启动地址: http://localhost:8090/#/login 2.项目内网启动地址: http://192.168.1.172:8090/#/login 3. 在vue项目的 ...
- Django Rest framework 之 版本
RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...
- C++解析 xml,用到pugixml库
参考网站: https://www.cnblogs.com/haomiao/p/5041065.html https://blog.csdn.net/iot_change/article/detail ...
- CSS格式化排版--排版
1.文字排版--字体:利用font-family设置字体,注意设置的字体必须是本地电脑中存在的字体. 例子:class="MicrosoftYahei"的h1标签的字体设置为 宋体 ...
- 排错-LR安装No Background bmp defined in ...的解决办法
LR安装No Background bmp defined in section General entry BGBmp的解决办法 by:授客 QQ:1033553122 问题描述: 我在win7装L ...
- 操作过程-CentOS7下添加新硬盘扩充已经存在的逻辑卷分区的存储空间
Linux添加硬盘扩充已有分区存储空间方式 总体步骤 磁盘初始化分区 创建物理卷 扩展卷组 扩展逻辑卷 通知文件系统生效 磁盘初始化分区 [root@oracledb ~]# fdisk -l 磁 ...
- python第五十二天---第九周作业 类 Fabric 主机管理程序
类 Fabric 主机管理程序开发:1. 运行程序列出主机组或者主机列表2. 选择指定主机或主机组3. 选择让主机或者主机组执行命令或者向其传输文件(上传/下载)4. 充分使用多线程或多进程5. 不同 ...
- Centos7下gogs数据配置迁移
工作需要把测试版的gogs迁移到正式版gogs,顺便记下笔记防止以后需要忘记了 环境: centos7测试版gogs:192.168.1.63 centos7正式版gogs:192.168.0.100 ...