如何使用mongodb数据库工具

如何使用mongodb数据库工具,第1张

1、基于mongo实现远程连接

[plain] view plaincopy

mongo -u admin -p admin 1921680197:27017/pagedb

通过mongo实现连接,可以非常灵活的选择参数选项,参看命令帮助,如下所示:

[plain] view plaincopy

mongo --help

MongoDB shell version: 183

usage: mongo [options] [db address] [file names (ending in js)]

db address can be:

foo foo database on local machine

19216905/foo foo database on 19216805 machine

19216905:9999/foo foo database on 19216805 machine on port 9999

options:

--shell run the shell after executing files

--nodb don't connect to mongod on startup - no 'db address'

arg expected

--quiet be less chatty

--port arg port to connect to

--host arg server to connect to

--eval arg evaluate javascript

-u [ --username ] arg username for authentication

-p [ --password ] arg password for authentication

-h [ --help ] show this usage information

--version show version information

--verbose increase verbosity

--ipv6 enable IPv6 support (disabled by default)

2、基于MongoDB支持的javascript实现远程连接

当你已经连接到一个远程的MongoDB数据库服务器(例如,通过mongo连接到1921680184),现在想要在这个会话中连接另一个远程的数据库服务器(1921680197),可以执行如下命令:

[plain] view plaincopy

> var x = new Mongo('1921680197:27017')

> var ydb = xgetDB('pagedb');

> use ydb

switched to db ydb

> db

ydb

> ydbpagefindOne()

{

"_id" : ObjectId("4eded6a5bf3bfa0014000003"),

"content" : "巴黎是浪漫的城市,可是",

"pubdate" : "2006-03-19",

"title" : "巴黎:从布鲁塞尔赶到巴黎",

"url" : ">

目前没有OLEDB的支持。

不过我倒是认为只是个好事,OLEDB封装的最初设计是完全面向关系型数据库的,在简单的查询语句外围再套上厚厚的一层,这样MongoDB引以为傲的速度就被抹杀了。你觉得本来挺爽的一件事,这么一套你还爽得起来么。

费关系型数据库的一大优点就是摒弃了SQL语句,这样对于简单的查询的执行效率有一定提高。

现在MongoDB基本上主流的语言都支持,你应该是用C++或者C#开发的吧,现在MongoDB的驱动非常完善了,绝对够你用的。

MongoDB是一个面向文档的数据库,目前由10gen开发并维护,它的功能丰富,齐全,完全可以替代MySQL。在使用MongoDB做产品原型的过程中,我们总结了MonogDB的一些亮点:使用JSON风格语法,易于掌握和理解:MongoDB使用JSON的变种BSON作为内部存储的格式和语法。针对MongoDB的 *** 作都使用JSON风格语法,客户端提交或接收的数据都使用JSON形式来展现。相对于SQL来说,更加直观,容易理解和掌握。Schema-less,支持嵌入子文档:MongoDB是一个Schema-free的文档数据库。一个数据库可以有多个Collection,每个Collection是Documents的集合。Collection和Document和传统数据库的Table和Row并不对等。无需事先定义Collection,随时可以创建。Collection中可以包含具有不同schema的文档记录。 这意味着,你上一条记录中的文档有3个属性,而下一条记录的文档可以有10个属性,属性的类型既可以是基本的数据类型(如数字、字符串、日期等),也可以是数组或者散列,甚至还可以是一个子文档(embed document)。这样,可以实现逆规范化(denormalizing)的数据模型,提高查询的速度。图1 MongoDB是一个Schema-free的文档数据库图2是一个例子,作品和评论可以设计为一个collection,评论作为子文档内嵌在art的comments属性中,评论的回复则作为comment子文档的子文档内嵌于replies属性。按照这种设计模式,只需要按照作品id检索一次,即可获得所有相关的信息了。在MongoDB中,不强调一定对数据进行Normalize ,很多场合都建议De-normalize,开发人员可以扔掉传统关系数据库各种范式的限制,不需要把所有的实体都映射为一个Collection,只需定义最顶级的class。MongoDB的文档模型可以让我们很轻松就能将自己的Object映射到collection中实现存储。图2 MongoDB支持嵌入子文档简单易用的查询方式:MongoDB中的查询让人很舒适,没有SQL难记的语法,直接使用JSON,相当的直观。对不同的开发语言,你可以使用它最基本的数组或散列格式进行查询。配合附加的operator,MongoDB支持范围查询,正则表达式查询,对子文档内属性的查询,可以取代原来大多数任务的SQL查询。CRUD更加简单,支持in-place update:只要定义一个数组,然后传递给MongoDB的insert/update方法就可自动插入或更新;对于更新模式,MongoDB支持一个upsert选项,即:“如果记录存在那么更新,否则插入”。MongoDB的update方法还支持Modifier,通过Modifier可实现在服务端即时更新,省去客户端和服务端的通讯。这些modifer可以让MongoDB具有和Redis、Memcached等KV类似的功能:较之MySQL,MonoDB更加简单快速。

Mongo是一个高性能,开源,无模式的文档型数据库,它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。Mongo使用C++开发,提供了以下功能:

◆面向集合的存储:适合存储对象及JSON形式的数据。

◆动态查询:Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。

◆完整的索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。

◆查询监视:Mongo包含一个监视工具用于分析数据库 *** 作的性能。

◆复制及自动故障转移:Mongo数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目标是提供冗余及自动故障转移。

◆高效的传统存储方式:支持二进制数据及大型对象(如照片或)。

◆自动分片以支持云级别的伸缩性(处于早期alpha阶段):自动分片功能支持水平的数据库集群,可动态添加额外的机器。

MongoDB的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统(丰富的功能)架起一座桥梁,集两者的优势于一身。根据官方网站的描述,Mongo适合用于以下场景:

◆网站数据:Mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

◆缓存:由于性能很高,Mongo也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo搭建的持久化缓存层可以避免下层的数据源过载。

◆大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。

◆高伸缩性的场景:Mongo非常适合由数十或数百台服务器组成的数据库。Mongo的路线图中已经包含对MapReduce引擎的内置支持。

◆用于对象及JSON数据的存储:Mongo的BSON数据格式非常适合文档化格式的存储及查询。

自然,MongoDB的使用也会有一些限制,例如它不适合:

◆高度事务性的系统:例如银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。

◆传统的商业智能应用:针对特定问题的BI数据库会对产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。

◆需要SQL的问题

MongoDB支持OS X、Linux及Windows等 *** 作系统,并提供了Python,PHP,Ruby,Java及C++语言的驱动程序,社区中也提供了对Erlang及NET等平台的驱动程序。

MongoDB和传统SQL schema设计上最大的区别就是关于模型关系用什么方法表示比较好(在MongoDB里即可以用Link,又可以用Embedded)

简单总结下:

FirstClass (比如“User”这种) 应该用独立的Collection

"条目类型"的,应该 embedded

两个模型之间如果是包含关系,用 embedded

多对多关系,用 link(类似sql里面的foregin key)

如果一个模型,其可能存的对象很少,那么就用独立的collection,这样有助于mongodb server做缓存

embedded方式不利于做复杂的关联,复杂的查询

embedded方式性能很有优势,如果你有“性能”方面的要求,可以考虑用embbed!

在启动Linux上的mongodb时使用master参数,在windows上启动时使用slave参数试试。

不过官方文档推荐24以后都使用replica set,不要再使用主从复制了。

使用replica set需要3个以上的节点,可以设置两个或以上的数据节点,多个选举节点,节点数要是基数个,哪个节点时primary由系统自己决定就好。

没有试过在Linux和windows上同时打开mongodb。

开启mongodb的参数可以参考这里:

>

以上就是关于如何使用mongodb数据库工具全部的内容,包括:如何使用mongodb数据库工具、使用mongodb数据库有哪些优势、mongodb 数据库支持OLEDB 连接不怎么设置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9326938.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存