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

时间:2022-03-28 16:08:13

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

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

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

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

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

下面我们使用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();
}
});
}
});
}
});

如下图所示:

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

我们可以单独指定_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();
}
});
}
});
}
});

如下图所示:

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

如果在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();
}
});
}
});
}
});

如下图所示:

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

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();
}
});
}
});
}
});

查询结果如下所示:

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

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});

执行结果如下所示:

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

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

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

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

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

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

运行结果如下所示:

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

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();
}
});
}
});
}
});

如下图所示:

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

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

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

如下图所示:

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

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数据库中查询数据(下)的更多相关文章

  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. hdu 2196 computer

    Computer Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  2. LINUX系统怎么关闭防火墙?

    所谓防火墙指的是一个由软件和硬件设备组合而成.在内部网和外部网之间.专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Int ...

  3. mosquitto MQTT message broker on ubuntu/debian built from source

    what is mosquitto? check this out! http://mosquitto.org what is MQTT? check this out. http://mqtt.or ...

  4. org.apache.jasper.JasperException

    1.错误描述 2014-7-13 17:20:50 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() ...

  5. nopcommerce 4.1 core 插件 相关1

    nop中 插件机制是比较值得学习的: Nop 插件学习: 1. 项目里面的生成必须是采用 直接编辑项目文件,参考nop原本的项目文件 动态加载插件的方法-mvc3 参考: using System.L ...

  6. openjtag 的硬件连接踩坑历程

    这个事情踩了不少坑,这个要记录一下: 1 代码的下载和编译按照下面的来:https://github.com/pulp-platform/pulp-debug-bridge 注意点: A 要最好使用p ...

  7. function CONVERSION_EXIT ****INPUT/OUTPUT说明

    CONVERSION_EXIT_ALPHA_INPUT和CONVERSION_EXIT_ALPHA_OUTPUT 函数说明 CONVERSION_EXIT_MATN1_INPUT 物料号码转换函数 C ...

  8. openssl的证书格式转换

    证书转换 PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 ...

  9. 从尾到头打印链表(C++和Python 实现)

    (说明:本博客中的题目.题目详细说明及参考代码均摘自 “何海涛<剑指Offer:名企面试官精讲典型编程题>2012年”) 题目 输入一个链表的头结点, 从尾到头反过来打印出每个结点的值. ...

  10. WSL安装xfce4

    参考:https://github.com/Microsoft/WSL/issues/637 安装组件 1. win10 上安装 Xming https://sourceforge.net/proje ...