首页 后端开发 php教程 MongoDB的技巧与注意事项汇总

MongoDB的技巧与注意事项汇总

Dec 01, 2017 am 11:28 AM

Mongodb,分布式文档存储数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。本文将和大家分享使用MongoDB时候遇到的问题的解决技巧,分享出来供大家参考学习。

一、查找数组字段不为空的记录

查找数据中数组字段不为空的记录。

举个例子:有以下Mongo文档,

{
 "id" : "581c060f2b436c05aafb1632",
 "commit_history" : [ 
 "581c20d52b436c05aafb1633", 
 "581c21c12b436c05aafb1634"
 ]
},
{
 "id" : "581c060f2b436c05aafb1633",
 "commit_history" : []
}
登录后复制

想要查找commit_history不为空的记录,有以下方法:

方法一: db.collection.find({commit_history: {$not: {$size: 0}}})

方法二: db.collection.find({'commit_history.0': {$exists: 1}})

二、MongoDB添加用户

在MongoDB中为一个Collection添加用户,可以如下操作:

use collection_name 切换到某个库

db.createUser(
 {
 user: "collection_name",
 pwd: "password",
 roles: [ "readWrite", "dbAdmin" ]
 }
)
登录后复制

三、有的时候需要删除指定字段那一列,使用update操作。

例如要删除name这一列:

query json:

{"name":{$exists:true}}
登录后复制

update json:

{$unset:{"name":""}}
登录后复制

四、数据导出,在mongodb的bin目录执行mongoexport命令并设定相关的参数

例如:

./mongoexport -h 192.168.0.201 --port 27017 –d admin –u admin –p admin -c department -o /home/admin/department.dat
登录后复制

-h:指定要连接的数据库的ip;

--port:指定要连接的数据库的端口;

-u:指定要连接的数据库的用户名;

-p:指定要连接的数据库的用户密码;

-d:指定要连接的库名;

-c:指定要导出的数据集合;

-o:指定要导出的数据目标存放地址;

注: (1)、需要保证连接的数据库处于正常运行状态中;

(2)、我曾遇到过一中情况,数据库中加入了用户信息,启动时是没有以用户验证的方式启动,但是执行这个命令的时候,还是在我指定了用户名和密码的情况下才导出成功,如果有人遇到相似情况,不妨一试。

五、数据导入,在mongodb的bin目录执行mongoimport命令并设置相关的参数,参数解释和上边一样

例如:

./mongoimport --port 27017 -d admin -u admin –p admin –c department /home/common/mongodb305/bin/department.dat
登录后复制


六、非amdin数据库的用户验证问题:

我们给mongodb数据库中的库添加用户,可以在目标数据库中使用如下命令,例如在mongoTest库中添加一个拥有读写权限的用户:

db.createUser({"user":"test","pwd":"123456","roles":["readWrite"]})
登录后复制


也可以在admin数据库中添加:

db.createUser({"user":"test","pwd":"123456","roles":[{"role":"readWrite","db":"test"},"readWrite"]})
登录后复制


要注意的是:这两种方式是有区别的,也正是这个区别曾坑了我一把:

使用第一种方式添加的时候,我们可以在mongodb的bin目录下直接执行如下命令进入test数据库中操作,增删改查都可以;也可以使用这个用户 名和密码在mongoVUE中连接:

./mongo -h 192.168.0.201 --port 27017 -u test -p 123456 -d test
登录后复制


但是如果是第二种方式创建的,那么再直接使用上边的命令,会提示验证失败,只有当先进入mongo shell连接到admin数据库,再切换到test数据库的时候才能验证通过。这算是一个小坑,不明情况的或许会非常纠结,明明用户名和密码没问题,却不知为什么就是连不上。

七、mongodb3.0默认的数据存储方式还是原来2.6一样的,我尝试过更改为新的存储方式,在启动时使用如下参数,但需要注意的是,需要在数据库中没有数据的前提下才可以,否则会报错:

./mongod -f /mongodb304/conf/mongodb.conf --storageEngine wiredTiger
登录后复制

mongodb.conf中配置了启动的其他各种参数,如dbpath、logpath等。

以上内容就是MongoDB日常使用的技巧与注意事项汇总,希望能帮助到大家。

相关推荐:

什么是mongoDB数据库

phpstudy如何扩展MongoDB

如何提升MongoDB的安全性

以上是MongoDB的技巧与注意事项汇总的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

net4.0有什么用 net4.0有什么用 May 10, 2024 am 01:09 AM

.NET 4.0 用于创建各种应用程序,它为应用程序开发人员提供了丰富的功能,包括:面向对象编程、灵活性、强大的架构、云计算集成、性能优化、广泛的库、安全性、可扩展性、数据访问和移动开发支持。

如何在Debian上配置MongoDB自动扩容 如何在Debian上配置MongoDB自动扩容 Apr 02, 2025 am 07:36 AM

本文介绍如何在Debian系统上配置MongoDB实现自动扩容,主要步骤包括MongoDB副本集的设置和磁盘空间监控。一、MongoDB安装首先,确保已在Debian系统上安装MongoDB。使用以下命令安装:sudoaptupdatesudoaptinstall-ymongodb-org二、配置MongoDB副本集MongoDB副本集确保高可用性和数据冗余,是实现自动扩容的基础。启动MongoDB服务:sudosystemctlstartmongodsudosys

MongoDB在Debian上的高可用性如何保障 MongoDB在Debian上的高可用性如何保障 Apr 02, 2025 am 07:21 AM

本文介绍如何在Debian系统上构建高可用性的MongoDB数据库。我们将探讨多种方法,确保数据安全和服务持续运行。关键策略:副本集(ReplicaSet):利用副本集实现数据冗余和自动故障转移。当主节点出现故障时,副本集会自动选举新的主节点,保证服务的持续可用性。数据备份与恢复:定期使用mongodump命令进行数据库备份,并制定有效的恢复策略,以应对数据丢失风险。监控与报警:部署监控工具(如Prometheus、Grafana)实时监控MongoDB的运行状态,并

Soland喂饭级撸毛空投教程:0成本无套路无反撸! Soland喂饭级撸毛空投教程:0成本无套路无反撸! Jun 25, 2024 pm 07:13 PM

Soland喂饭级撸毛教程:0成本无套路无反撸!最近撸毛再次成为很多币圈小伙伴讨论的话题,当然这次大家普遍带着一种失望甚至愤怒的心态,原因无他,先是Layerzero的女巫筛查拉锯战批量筛选,接着PUA之王ZKsync的空投让很多人直呼被严重反撸,更有什者付出数万美金的Gas和交互成本,最后收益不到十分之一,这还不考虑所花费的时间等其他成本。两大“天王”级别的项目让不少人纷纷想要退出撸毛圈,其实这里我们认为大可不必,因为加密赛道仍然存在很多机会,不管是规模大小,项目方都有需求来宣传

Navicat查看MongoDB数据库密码的方法 Navicat查看MongoDB数据库密码的方法 Apr 08, 2025 pm 09:39 PM

直接通过 Navicat 查看 MongoDB 密码是不可能的,因为它以哈希值形式存储。取回丢失密码的方法:1. 重置密码;2. 检查配置文件(可能包含哈希值);3. 检查代码(可能硬编码密码)。

币圈合约怎么操作大概率赚钱?有这几个小技巧 币圈合约怎么操作大概率赚钱?有这几个小技巧 Mar 05, 2025 pm 01:48 PM

币圈合约:高风险高收益的双刃剑,如何提高盈利概率?许多币圈老手都曾被合约交易的巨大潜力吸引,它既能带来丰厚回报,也可能导致巨额亏损。合约交易本质上是数字货币的衍生品,其高风险、高收益的特点使其备受关注。那么,如何在币圈合约交易中提高盈利概率呢?这需要掌握一些关键技巧。本文将深入探讨如何降低风险,并提升盈利能力。币圈合约盈利策略:在波动剧烈的加密货币市场中,想要在合约交易中获得稳定盈利,需要制定周全的策略并严格执行:风险管理至上:设置止损点是关键。预先设定止损价位,控制潜在亏损,避免单笔交

Pi币重大更新:Pi Bank要来了! Pi币重大更新:Pi Bank要来了! Mar 03, 2025 pm 06:18 PM

PiNetwork即将推出革命性移动银行平台PiBank!PiNetwork今日发布重大更新Elmahrosa(Face)PIMISRBank,简称PiBank,它将传统银行服务与PiNetwork加密货币功能完美融合,实现法币与加密货币的原子交换(支持美元、欧元、印尼盾等法币与PiCoin、USDT、USDC等加密货币的互换)。究竟PiBank有何魅力?让我们一探究竟!PiBank主要功能:一站式管理银行账户和加密货币资产。支持实时交易,并采用生物特

MongoDB与Oracle:数据建模和灵活性 MongoDB与Oracle:数据建模和灵活性 Apr 11, 2025 am 12:11 AM

MongoDB更适合处理非结构化数据和快速迭代,Oracle更适合需要严格数据一致性和复杂查询的场景。1.MongoDB的文档模型灵活,适合处理复杂数据结构。2.Oracle的关系模型严格,确保数据一致性和复杂查询性能。

See all articles