在MongoDB数据库中查询数据(上)
在MongoDB数据库中查询数据(上)
在MongoDB数据库中,可以使用Collection对象的find方法从一个集合中查询多个数据文档,find方法使用方法如下所示:
collection.find(selector, [options]);
selector值为一个对象,用于指定查询时使用的查询条件,options是可选的参数,该参数值是一个对象,用于指定查询数据时所选用的选项。
find方法返回一个代表游标的Cursor对象,在该游标中包含了所有查询到的数据文档信息。可以使用Cursor对象的toArray方法获取所有查询到的数据文档,方法如下:
collection.find(selector, [options]).toArray(callback);
callback 用于指定数据文档操作结束时执行的回调函数,该回调函数使用如下所示:
function(err, docs) {};
在该回调函数中,err参数为获取数据文档操作失败时触发的错误对象,docs参数为一个数组,包含了所有查询到的数据文档。
如下是一个查询 user结合中的所有数据,如果查询失败,则抛出查询数据失败时触发的错误对象,如果查询成功,则在控制台中输出所有查询到的数据,然后关闭数据库,如下所示:
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({}).toArray(function(err, docs) {
if (err) {
throw err;
} else {
console.log(docs);
db.close();
}
});
}
});
}
});
如下图所示:

二:根据查询条件来查询数据
2.1 可以在查询条件中指定需要查询的字段及字段值,如下方法所示:
{<字段名>:<字段值>}
下面我们把上面的查询条件改为如下:
collection.find({userName: '龙恩'});
所有代码如下:
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: '龙恩'}).toArray(function(err, docs) {
if (err) {
throw err;
} else {
console.log(docs);
db.close();
}
});
}
});
}
});
执行后如下所示:

2.2 可以在查询选择器中指定需要查询的字段并限定字段值的范围,如下方法所示:
{<字段名>:{$in:[<字段值1>,<字段值2>...]}}
下面我们将find方法的查询条件改为如下所示:
collection.find({userName:{$in:['空智']}});
下面是更改后的所有代码,如下所示:
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:{$in:['空智']}}).toArray(function(err, docs) {
if (err) {
throw err;
} else {
console.log(docs);
db.close();
}
});
}
});
}
});
运行结果如下所示:

2.3 指定多个字段进行查询
在一个复杂的查询条件中,可能需要同时指定多个字段值的条件查询。下面我们往我们的数据中插入如下一些数据;代码如下:
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 });
var docs = [
{type: 'food', price: 11},
{type: 'food', price: 10},
{type: 'food', price: 9},
{type: 'food', price: 8},
{type: 'food', price: 9}
];
db.open(function(err, db) {
if (err) {
throw err;
} else {
console.log('成功建立数据库连接');
db.collection('users', function(err, collection) {
collection.insert(docs, function(err, docs) {
if (err) {
throw err;
} else {
console.log(docs);
db.close();
}
})
});
}
});
如下图所示:

现在我们来查询这些数据中 type 字段值等于 'food', 且 price字段值小于10的数据,如下代码所示:
collection.find({type:'food', price:{$lt:10}})
所有代码如下:
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({type:'food', price:{$lt:10}}).toArray(function(err, docs) {
if (err) {
throw err;
} else {
console.log(docs);
db.close();
}
});
}
});
}
});
执行效果如下图所示:

2.4 使用 '或' 关系来指定多个字段值的查询条件。
在一个复杂的查询条件中,可能需要使用 ‘或’ 关系来指定多个字段的查询条件,比如 现在我们查询,price为11, 或者price字段值小于9的数据,使用如下方法:
collection.find({
type:'food',
$or: [
{price: 11},
{price: {$lt: 9}}
]
});
所有代码如下所示:
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({
type:'food',
$or: [
{price: 11},
{price: {$lt: 9}}
]
}).toArray(function(err, docs) {
if (err) {
throw err;
} else {
console.log(docs);
db.close();
}
});
}
});
}
});
如下图所示:

在MongoDB数据库中查询数据(上)的更多相关文章
- MongoDB数据库中查询数据(下)
MongoDB数据库中查询数据(下) 在find中,options参数值为一个对象,用来设置查询数据时使用的选项,下面我们来对该参数值对象中可以使用的属性进行介绍: 1. fields; 该属性值为一 ...
- flask再学习-思考之怎么从数据库中查询数据在页面展示!
看别人视频觉得很简单,要自己做蒙蔽了!这样子.NO! 1. 流程: 首先要有和数据库连接的驱动!一般有PYMySQL mysqlclient 等 使用扩展Flask-SQLAlchemy 获得orm对 ...
- mongodb数据库中插入数据
mongodb数据库中插入数据 一:connection 访问集合: 在mongodb数据库中,数据是存储在许多数据集合中,可以使用数据库对象的collection方法访问一个集合.该方法使用如下: ...
- 使用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 *&------------------------------------------- ...
随机推荐
- Nginx拦截指定国家的IP
Nginx拦截指定国家的IP 一.下载GeoIP数据库 wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz wget h ...
- Window7 上跑 Spark 单机模式
一.下载Spark 下载地址:http://www.eu.apache.org/dist/spark/spark-1.5.2/spark-1.5.2-bin-hadoop2.4.tgz 我这里测试这个 ...
- Python中的基本数据类型的区别
set集合和dict字典的区别 唯一区别: set没有对应的value值 相同点: 都无索引,不可进行切片和根据索引进行的操作 两者都是不可哈希的可变类型 两者的内部元素是可哈希的不可变类型 利用哈希 ...
- Python 获取被调用函数名称,所处模块,被调用代码行
获取被调用函数名称,所处模块,被调用代码行 by:授客 QQ:1033553122 module2.py: #!/usr/bin/env python # -*- coding:utf-8 -*- _ ...
- LyX快捷键管理
快捷键修改:Tools->Preference->Editing->Shortcuts:修改后要Tools->Reconfig生效 快捷键默认保存文件:%appdata%\Ly ...
- SQL Server 2000详细安装过程及配置
说明:这篇文章是几年前我发布在网易博客当中的原创文章,但由于网易博客现在要停止运营了,所以我就把这篇文章搬了过来,虽然现如今SQL Server 2000软件早已经过时了,但仍然有一部分人在使用它,尤 ...
- 自动化测试基础篇--Selenium Python环境搭建
学习selenium python需要的工具: 1.浏览器 2.Python 3.Selenium 4.FireBug(Firefox) 5.chromedriver.IEDriverServer.g ...
- IP负载均衡
推荐一篇关于LVS的好文: https://www.cnblogs.com/gaoxu387/p/7941381.html 一.原博主要内容: 1.概述 IP负载均衡:四层负载,是基于IP+端口的负载 ...
- Dota 2 中安装包的作用
在玩data 2 的时候有很多其他安装包的下载,那这些有啥用呢? Reborn是Dota2的重生客户端,也就是主客户端. Opengl是显卡优化的,应该是微软的一个标准,有助于提高游戏的 FPS. V ...
- windows 实用技巧
以下内容版权归原作者所有!!!如果侵权,立即删除. 1.系统激活:https://mp.weixin.qq.com/s/Kl_iEeSSxSprblfSRZ6yEQ 2.百度云下载:https://w ...