如何用Java *** 作MongoDB

如何用Java *** 作MongoDB,第1张

HelloWorld程序

学习任何程序的第一步,都是编写HelloWorld程序,我们也不例外,看下如何通过Java编写一个HelloWorld的程序。

首先,要通过Java *** 作Mongodb,必须先下载Mongodb的Java驱动程序,可以在这里下载。

新建立一个Java工程,将下载的驱动程序放在库文件路径下,程序代码如下:

package commkyongcore;

import javanetUnknownHostException;

import commongodbBasicDBObject;

import commongodbDB;

import commongodbDBCollection;

import commongodbDBCursor;

import commongodbMongo;

import commongodbMongoException;

/

 Java + MongoDB Hello world Example

 

/

public class App {

    public static void main(String[] args) {

        try {

            //实例化Mongo对象,连接27017端口

            Mongo mongo = new Mongo("localhost", 27017);

                               //连接名为yourdb的数据,假如数据库不存在的话,mongodb会自动建立

            DB db = mongogetDB("yourdb");

            // Get collection from MongoDB, database named "yourDB"

//从Mongodb中获得名为yourColleection的数据集合,如果该数据集合不存在,Mongodb会为其新建立

            DBCollection collection = dbgetCollection("yourCollection");

    // 使用BasicDBObject对象创建一个mongodb的document,并给予赋值。

            BasicDBObject document = new BasicDBObject();

            documentput("id", 1001);

            documentput("msg", "hello world mongoDB in Java");

            //将新建立的document保存到collection中去

            collectioninsert(document);

            // 创建要查询的document

            BasicDBObject searchQuery = new BasicDBObject();

            searchQueryput("id", 1001);

            // 使用collection的find方法查找document

            DBCursor cursor = collectionfind(searchQuery);

            //循环输出结果

            while (cursorhasNext()) {

            Systemoutprintln(cursornext());

            }

            Systemoutprintln("Done"); 

        } catch (UnknownHostException e) {

            eprintStackTrace();

        } catch (MongoException e) {

            eprintStackTrace();

        }

    }

}

最后,输出的结果为:

{ "_id" : { "$oid" : "4dbe5596dceace565d229dc3"} , 

                "id" : 1001 , "msg" : "hello world mongoDB in Java"}

Done

在上面的例子中,演示了使用Java对Mongodb *** 作的重要方法和步骤,首先通过创建Mongodb对象,传入构造函数的参数是Mongodb的数据库所在地址和端口,然后使用

getDB方法获得要连接的数据库名,使用getCollection获得数据集合的名,然后通过新建立BasicDBObject对象去建立document,最后通过collection的insert方法,将建立的document保存到数据库中去。而collection的find方法,则是用来在数据库中查找document。

从Mongodb中获得collection数据集

在Mongodb中,可以通过如下方法获得数据库中的collection:

DBCollection collection = dbgetCollection("yourCollection");

如果你不知道collection的名称,可以使用dbgetCollectionNames()获得集合,然后再遍历,如下:

DB db = mongogetDB("yourdb");

Set collections = dbgetCollectionNames();

for(String collectionName : collections){

Systemoutprintln(collectionName);

}

完成的一个例子如下:

package commkyongcore;

import javanetUnknownHostException;

import javautilSet;

import commongodbDB;

import commongodbDBCollection;

import commongodbMongo;

import commongodbMongoException;

/

 Java : Get collection from MongoDB

 

/

public class GetCollectionApp {

public static void main(String[] args) {

try {

Mongo mongo = new Mongo("localhost", 27017);

DB db = mongogetDB("yourdb");

Set<String> collections = dbgetCollectionNames();

for (String collectionName : collections) {

Systemoutprintln(collectionName);

}

DBCollection collection = dbgetCollection("yourCollection");

Systemoutprintln(collectiontoString());

Systemoutprintln("Done");

} catch (UnknownHostException e) {

eprintStackTrace();

} catch (MongoException e) {

eprintStackTrace();

}

}

}

Mongodb中如何插入数据

下面,讲解下如何使用4种方式,将JSON数据插入到Mongodb中去。首先我们准备JSON

格式的数据,如下:

 

 {

"database" : "mkyongDB",

"table" : "hosting",

"detail" :

{

records : 99,

index : "vps_index1",

active : "true"

}

}

}

我们希望用不同的方式,通过JAVA代码向Mongodb插入以上格式的JSON数据

第一种方法,是使用BasicDBObject,方法如下代码所示:

BasicDBObject document = new BasicDBObject();

documentput("database", "mkyongDB");

documentput("table", "hosting");

BasicDBObject documentDetail = new BasicDBObject();

documentDetailput("records", "99");

documentDetailput("index", "vps_index1");

documentDetailput("active", "true");

documentput("detail", documentDetail);

collectioninsert(document);

第二种方法是使用BasicDBObjectBuilder对象,如下代码所示:

BasicDBObjectBuilder documentBuilder = BasicDBObjectBuilderstart()

add("database", "mkyongDB")

add("table", "hosting");

BasicDBObjectBuilder documentBuilderDetail = BasicDBObjectBuilderstart()

add("records", "99")

add("index", "vps_index1")

add("active", "true");

documentBuilderadd("detail", documentBuilderDetailget());

collectioninsert(documentBuilderget());

第三种方法是使用Map对象,代码如下:

 

 Map documentMap =new HashMap();

documentMapput("database", "mkyongDB");

documentMapput("table", "hosting");

Map documentMapDetail =new HashMap();

documentMapDetailput("records", "99");

documentMapDetailput("index", "vps_index1");

documentMapDetailput("active", "true");

documentMapput("detail", documentMapDetail);

collectioninsert(new BasicDBObject(documentMap));

第四种方法,也就是最简单的,即直接插入JSON格式数据

String json ="{'database' : 'mkyongDB','table' : 'hosting',"+

"'detail' : {'records' : 99, 'index' : 'vps_index1', 'active' : 'true'}}}";

DBObject dbObject =(DBObject)JSONparse(json);

collectioninsert(dbObject);

这里使用了JSON的parse方法,将解析后的JSON字符串转变为DBObject对象后再直接插入到collection中去。

完整的代码如下所示:

packagecommkyongcore;

importjavanetUnknownHostException;

importjavautilHashMap;

importjavautilMap;

importcommongodbBasicDBObject;

importcommongodbBasicDBObjectBuilder;

importcommongodbDB;

importcommongodbDBCollection;

importcommongodbDBCursor;

importcommongodbDBObject;

importcommongodbMongo;

importcommongodbMongoException;

importcommongodbutilJSON;

/

Java MongoDB : Insert a Document

/

publicclass InsertDocumentApp {

publicstaticvoid main(String[] args){

try{

Mongo mongo =new Mongo("localhost", 27017);

DB db = mongogetDB("yourdb");

// get a single collection

DBCollection collection = dbgetCollection("dummyColl");

// BasicDBObject example

Systemoutprintln("BasicDBObject example");

BasicDBObject document =new BasicDBObject();

documentput("database", "mkyongDB");

documentput("table", "hosting");

BasicDBObject documentDetail =new BasicDBObject();

documentDetailput("records", "99");

documentDetailput("index", "vps_index1");

documentDetailput("active", "true");

documentput("detail", documentDetail);

collectioninsert(document);

DBCursor cursorDoc = collectionfind();

while(cursorDochasNext()){

Systemoutprintln(cursorDocnext());

}

collectionremove(new BasicDBObject());

// BasicDBObjectBuilder example

Systemoutprintln("BasicDBObjectBuilder example");

BasicDBObjectBuilder documentBuilder = BasicDBObjectBuilderstart()

add("database", "mkyongDB")

add("table", "hosting");

BasicDBObjectBuilder documentBuilderDetail = BasicDBObjectBuilderstart()

add("records", "99")

add("index", "vps_index1")

add("active", "true");

documentBuilderadd("detail", documentBuilderDetailget());

collectioninsert(documentBuilderget());

DBCursor cursorDocBuilder = collectionfind();

while(cursorDocBuilderhasNext()){

Systemoutprintln(cursorDocBuildernext());

}

collectionremove(new BasicDBObject());

// Map example

Systemoutprintln("Map example");

Map documentMap =new HashMap();

documentMapput("database", "mkyongDB");

documentMapput("table", "hosting");

Map documentMapDetail =new HashMap();

documentMapDetailput("records", "99");

documentMapDetailput("index", "vps_index1");

documentMapDetailput("active", "true");

documentMapput("detail", documentMapDetail);

collectioninsert(new BasicDBObject(documentMap));

DBCursor cursorDocMap = collectionfind();

while(cursorDocMaphasNext()){

Systemoutprintln(cursorDocMapnext());

}

collectionremove(new BasicDBObject());

// JSON parse example

Systemoutprintln("JSON parse example");

String json ="{'database' : 'mkyongDB','table' : 'hosting',"+

"'detail' : {'records' : 99, 'index' : 'vps_index1', 'active' : 'true'}}}";

DBObject dbObject =(DBObject)JSONparse(json);

collectioninsert(dbObject);

DBCursor cursorDocJSON = collectionfind();

while(cursorDocJSONhasNext()){

Systemoutprintln(cursorDocJSONnext());

}

collectionremove(new BasicDBObject());

}catch(UnknownHostException e){

eprintStackTrace();

}catch(MongoException e){

eprintStackTrace();

}

}

}

 

MongoDB 是一个典型的NoSQL(not only sql)数据库是开源的面向文档的数据库管理系统,主要实现NoSQL数据库管理系统,用于存储海量数据(humongous,Mongo名称的由来)。。

ElasticSearch是基于Apache Lucene 的RESTful 实时搜索和分析引擎。ES基于数据抽取一些值,提供实时存储、索引、搜索和分析数据功能,这些数据收集自其他数据源(包括MongoDB),可以直接存储在Elasticsearch集群中。

一、共同点:

面向文档存储,无Schema,分布式数据存储,高可用性,分片和复制等。虽然使用ElasticSearch作为主数据存储是可行的,但一般做为主数据库的辅助数据库。

二、不同点:

1、Elasticsearch是java编写,通过RESTFul接口 *** 作数据。MongoDB是C++编写,通过driver *** 作数据。

2、MongoDB的分片有hash和range两种方式,Elasticsearch只有hash一种。

3、Elasticsearch是天生分布式,主副分片自动分配和复制,开箱即用。MongoDB的分布式是由“前置查询路由+配置服务+shard集合”,需要手动配置集群服务。

4、内部存储ES是倒排索引+docvalues+fielddata。

5、Elasticsearch全文检索有强大的分析器且可以灵活组合,查询时智能匹配。MongoDB的全文检索字段个数有限制。

6、Elasticsearch所有字段自动索引,MongoDB的字段需要手动索引。Elasticsearch 使用 Apache Lucene 实现索引,而 MongoDB 索引是基于传统的B+ 树结构。Elasticsearch利用Lucene实现实时索引和搜索功能,默认支持在文档的每个字段上创建索引。而 MongoDB,我们必须定义索引用于提升查询性能,但会影响写 *** 作。

7、Elasticsearch非实时有数据丢失窗口。mongodb实时理论上无数据丢失风险。

8、文档 - Elasticsearch 存储 JSON 文档, MongoDB 采用BSON格式存储 (Binary JSON)。

9、REST 接口 - Elasticsearch 提供 RESTful接口,MongoDB 不提供 RESTful接口。

10、MapReduce - MongoDB 支持 MapReduce 数据 *** 作。 Elasticsearch 不支持 MapReduce。

三、使用场景:

MongoDB是通用功能的非RESTful风格的 NoSQL 数据库 文档以 BSON 格式存储,主要用于存储数据。

Elasticsearch 是分布式全文检索引擎,可以提供实时Restful风格API处理海量面向文档的数据。文档使用JSON格式,主要用于基于文本的数据搜索。

在实际应用中两者通常同时使用,Elasticsearch一般不作为主存储数据库,而是和SQL & NoSQL数据库一起使用,作为辅助数据库。

与MongoDb不同, Elasticsearch 默认没有提供安全特性,如认证和授权。Elasticsearch和 Logstash & Kibana 一起称为ELK stack,用于快速查询数据并可视化展现分析数据。

Elasticsearch 非常适合需要基于文本进行快速索引然后进行检索,其查询速度非常快,大多数情况速度最多几十毫秒。

因此,Elasticsearch 通常作为主数据库存储的辅助存储库。一般数据库系统更聚焦于约束、准确性和健壮性。当主记录在事务中更新时,其会同时被推送至Elasticsearch中。

一般典型使用PostgreSQL 和 ZooKeeper 负责数据的存储, 同时提供给Elasticsearch实现实时检索。

没有万能的产品,没有一个数据库可以满足所有需求。所以我们需要了解不同数据库的优势和劣势,并选择合适的产品用于特定的需求。

$ mongoexport -h xxxxxxxx  \

  --port=27017  \

  --username=username \

  --password='password' \

  --authenticationDatabase=admin  \

  -d  logstat  \

  -c T_LoginOut \

  -q '{"$and":[{"sendTime":{"$gt": new Date(1598889600000)}},{"sendTime":{"$lt": new Date(1601481600000)}}]}' \

  --type json \

  -o T_LoginOutjson

#######################

$  mongo  --host xxxxxxxx:27017  --username=username  --password='password'  --authenticationDatabase=admin

> dbT_Testcount({"$and":[{"day":{"$gte": ISODate("2020-12-31T16:00:00000Z")}},{"day":{"$lte": ISODate("2021-07-30T15:59:59999Z")}}]})

下面是一个瑭锦TANJURD总结 MongoDB 优缺点的列表,希望对打算使用 MongoDB 的同学,能有一些作用:\x0d\ 优势:\x0d\ 快速!(当然,这和具体的应用方式有关,通常来说,它比一般的关系型数据库快5位左右。)\x0d\ 很高的可扩展性 _ 轻轻松松就可实现PB级的存储(但是可能我们并不需要PB级的存储,10TB可能就够了)\x0d\ 他有一个很好的 replication 模式 (replica sets)\x0d\ 有很完善的Java API\x0d\ 他的存储格式是Json的,这对Java来说非常好处理,对javascirpt亦然。\x0d\ 运维起来非常方便,你不用专门为它安排一个管理员。\x0d\ 它有一个非常活跃的社区(我提出的一个bug在20分钟内就能得到修复。多谢Elliot)\x0d\ 他的版本控制非常清楚。\x0d\ MongoDB 背后的公司(10gen)已经准备好了明天在 MongoDB 上面的投入的资金了。\x0d\ 劣势\x0d\ 应用经验缺乏,我们都没有相关NoSQL 产品的使用经验。\x0d\ 项目相对来说还比较新。\x0d\ 和以往的存储相比,数据的关系性 *** 作不再存在。

Mongodb和mysql的区别

1Mongodb简介及优缺点分析

Mongodb是非关系型数据库(nosql ),属于文档型数据库。文档是mongoDB中数据的基本单元,类似关系数据库的行,多个键值对有序地放置在一起便是文档,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。

存储方式:虚拟内存+持久化。

查询语句:是独特的Mongodb的查询方式。

适合场景:事件的记录,内容管理或者博客平台等等。

架构特点:可以通过副本集,以及分片来实现高可用。

数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。

成熟度与广泛度:新兴数据库,成熟度较低,Nosql数据库中最为接近关系型数据库,比较完善的DB之一,适用人群不断在增长。

优点:

快速!在适量级的内存的Mongodb的性能是非常迅速的,它将热数据存储在物理内存中,使得热数据的读写变得十分快。高扩展性,存储的数据格式是json格式!

缺点:

① mongodb不支持事务 *** 作。

② mongodb占用空间过大。

③ 开发文档不是很完全,完善。

2MySQL优缺点分析

优点:

在不同的引擎上有不同 的存储方式。

查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高。

开源数据库的份额在不断增加,mysql的份额页在持续增长。

缺点:

在海量数据处理的时候效率会显著变慢。

3Mongodb和MySQL数据库的对比

传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。

MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。

4MongoDB常用语句

# 连接Mongo数据库,并设置数据存储地址

mongodexe --dbpath "d:softwareMongoDBServer30data"

#-----------------------#1# 数据库

# 查看所有的数据库

show dbs

# 删除当前使用的数据库

dbdropDatabase()

# 使用这个数据库(只有插入数据后完成创建数据库)

use dbt

# 查看当前使用的数据库

db

dbgetName()

# 查看当前数据库状态

dbstats()

# 修复当前数据库

dbrepairDatabase()

# 从一个数据库复制到另一个数据库

dbcopyDatabase("mydb", "temp", "127001");

#-----------------------#2# 集合

# 查看当前数据库下所有的集合

show collections

show tables

# 创建名称为coll集合

dbcreateCollection('coll')

dbcreateCollection("coll2", {capped:true, autoIndexId:true, size:6142800, max:10000}) # 可选参数

# 查看当前集合状态

dbcollstats()

# 删除名称为coll集合

dbcolldrop()

#-----------------------#3# 集合数据

# 插入空数据并且直接创建名称为coll集合

dbcollinsert({})

# 插入一个或多个数据

dbcollinsert({name:'tom', age:22})

dbcollinsert([{name:'adam', age:10},{name:'john', age:23}])

# 添加数据(save方法可以修改相同id的数据)

dbcollsave({name:'allen'})

# 删除一个或所有的数据

dbcollremove({name:'tom'})

dbcollremove({})

# 删除符合条件的数据中的第一条

dbcollremove({name:'tom'}, 1)

# 更改数据

dbcollupdate({name:'tom', age:22}, {$set:{name:'tom', age:222}})

# 查看数据

dbcollfind()

# 查看一条数据

dbcollfindOne()

dbcollfind({}, {name:1, '_id':0}) # 1表示显示,0表示不显示(find默认显示_id)

# 格式化显示数据,使数据更加清晰明了

dbcollfind()pretty()

# 使用and,or查看数据

dbcollfind({name:'tom', age:22}) # 等同and使用

dbcollfind({$or:[{name:'tom'}, {age:21}]}) # or使用

# *** 作符大于,小于,等于,不等于,大于不等于,小于不等于

dbcollfind({age: {$gt: 22}}) # 大于

dbcollfind({age: {$lt: 22}}) # 大于

dbcollfind({age: 22}) # 等于

dbcollfind({age: {$ne: 22}}) # 不等于

dbcollfind({age: {$gte: 22}}) # 大于等于

dbcollfind({age: {$lte: 22}}) # 小于等于

# 显示从skip之后limit个

dbcollfind()limit(2)skip(1)

#-----------------------# # 用户

# 3x之后版本添加用户

use admin

dbcreateUser({user:'nu', pwd:'nu', roles:[{role:'readWrite',db:'admin'}]})

# 用户认证

dbauth("nu", "nu");

# 显示当前所有用户

show users;

dbsystemusersfind()

3x版本删除用户

dbremoveUser('nu') # 不推荐使用,已经废弃

dbdropUser("nu");

# 当前db版本

dbversion();

# 当前db的链接机器地址和端口

dbgetMongo();

# 备份到备份目录

mongodump

# 从备份目录恢复备份语句。

mongorestore

咱们下期见。

方法/步骤

1

打开百度首页,搜索“MongoDB”,如下图所示:

2

网站主页中,点击“DOWNLOAD MONGODB”,并下载最新稳定版本,如下图所示:

3

下载下来的是一个msi安装文件,点击进行安装,默认安装到C:\Program File或C:\Program Files (x86)文件夹内,如下图所示:

4

配置环境变量,右键“我的电脑”->"高级系统设置"->"高级"->"环境变量",在系统变量中找到Path变量值,进行修改,在末尾追加 ;C:\Program Files (x86)\MongoDB\bin,(当然你也可以将第3步骤中的MongoDB文件夹拷贝到其他磁盘路径下,我就是这样做的),如下图所示:

5

为了验证环境变量配置成功,打开CMD命令提示符,输入 mongod -help,下面会罗列一些列的配置参数,说明已成功,如下图所示:

6

在MongoDB文件夹下和bin目录同级目录下,新建一个data文件夹,data文件夹下再分别新建一个db和log文件夹,分别用来存放数据文件和日志文件,如下图所示:

7

在命令行中输入以下内容

mongod --dbpath "F:\MongoDB\data\db" --logpath

"F:\MongoDB\data\log\MongoDBlog" --install --serviceName "MongoDB"

这里是日志路径和数据路径,具体的路径根据自己数据和日志文件的文件路径相应进行修改,这里MongoDBlog就是开始建立的日志文件,--serviceName "MongoDB" 服务名为MongoDB。这样就在Windows下成功建立了MongoDB的服务,如下图所示:

8

在“运行”中输入“servicesmsc”,打开“服务”管理界面,可以看到MongoDB这个服务,点击列表中的“MongoDB”,再点击“启动”按钮,就将MongoDB成功启动了

MongoDB和MySQL分别是领先的开源NoSQL和关系数据库。哪个最适合您的应用程序?

在1990年代的互联网泡沫时期,用于Web应用程序的一种通用软件堆栈是LAMP,它最初代表Linux(OS),Apache(Web服务器),MySQL(关系数据库)和PHP(服务器编程语言)。MySQL是首选的数据库,主要是因为它是免费的开源代码,并且具有良好的读取性能,非常适合从数据库动态生成网站的“ Web 20”应用程序。

之后,代表MongoDB(文档数据库),Express(Web服务器),AngularJS(前端框架)和Nodejs(后端JavaScript运行时)的MEAN堆栈开始流行。除其他原因外,MEAN堆栈很有吸引力,因为您需要了解的唯一语言是JavaScript。与等效的LAMP堆栈相比,它还需要更少的RAM。

MySQL AB的Monty Widenius和David Axmark最初于1994年开始开发MySQL。产品名称中的“ My”是指Widenius的女儿,而不是英语单词“ my”。MySQL旨在与mSQL(又名Mini)兼容。 SQL),并添加了SQL查询层和开放源代码许可(实际上是专有和GPL双重许可)。MySQL的公共发行版于1996年底开始,并且每年或每两年持续发行一次。MySQL是当前最受欢迎的关系数据库。

Sun Microsystems于2008年以10亿美元的价格收购了MySQL AB,Oracle于2010年收购了Sun。在Oracle收购MySQL的广泛关注中,Widenius在收购Oracle之前就将MySQL 55合并到了MariaDB中。MariaDB努力维护与Oracle MySQL版本的兼容性。

与功能更强大的商业关系数据库(例如Oracle数据库,IBM DB / 2和Microsoft SQL Server)相比,MySQL最初是一个相当低端的关系数据库,尽管它足以成为动态网站的后备存储。多年来,它增加了您希望从关系数据库获得的大多数功能,包括事务,参照完整性约束,存储过程,游标,全文索引和搜索,地理索引和搜索以及群集。

尽管MySQL现在支持“大数据库”功能,例如主从部署,与Memcached一起使用以及水平分片,但它仍通常用于中小型部署。将MySQL扩展到多个从属服务器可以提高读取性能,但是只有主服务器才能接受写请求。

AWS提供了两种形式的MySQL即服务,即Amazon RDS和Amazon Aurora。后者具有更高的性能,可以处理TB级的数据,更新副本的延迟时间更短,并且可以直接与Oracle数据库和SQL Server竞争。

MongoDB是高度可伸缩的 *** 作文档数据库,可在开源版本和商业企业版本中使用,它可以在本地运行或作为托管云服务运行。托管云服务称为MongoDB Atlas。

MongoDB无疑是NoSQL数据库中最受欢迎的数据库。它的文档数据模型为开发人员提供了极大的灵活性,而其分布式体系结构则提供了很好的可伸缩性。因此,通常选择MongoDB用于必须管理大量数据,得益于水平可伸缩性并处理不适合关系模型的数据结构的应用程序。

MongoDB是一个基于文档的存储,在其之上还具有一个基于图形的存储。MongoDB实际上并不存储JSON:它存储BSON(二进制JSON),该扩展了JSON表示(字符串)以包括其他类型,例如int,long,date,浮点,decimal128和地理空间坐标。

MongoDB可以使用数据的类型生成正确的索引类型,从而在数据的单个副本上生成多模式图形,地理空间,B树和全文本索引。MongoDB使您可以在任何文档字段上创建索引。MongoDB 4具有多文档事务,这意味着即使必须标准化数据设计,您仍然可以获得ACID属性。

默认情况下,MongoDB使用动态模式,有时称为无模式。单个集合中的文档不需要具有相同的字段集,并且字段的数据类型可以在集合中的不同文档之间有所不同。您可以随时使用动态模式更改文档结构。

但是,可以使用架构治理。从MongoDB 36开始,MongoDB支持JSON模式验证,您可以在验证器表达式中将其打开。

在LAMP和MEAN堆栈上存在很多变化。例如,您可以在Windows(WAMP)或MacOS(MAMP)上运行而不是Linux OS。您可以运行IIS(WIMP),而不是Windows上的Apache Web服务器。

您可以运行PostgreSQL或SQL Server,而不是LAMP堆栈中的MySQL关系数据库。如果您需要全球分布,则可以运行CockroachDB或Google Cloud Spanner。可以使用Perl或Python代替PHP语言。如果要使用Java或C#进行编码,则需要考虑单独的堆栈系列。

您可以运行Couchbase或Azure Cosmos DB以获得更好的全局分布,而不是MEAN堆栈中的MongoDB文档数据库。可以使用十二个Nodejs Web服务器框架中的任何一个来代替Express 。除了AngularJS前端框架,您还可以运行Angular 2或React。

选择数据库时要问的最重要的问题是:

这些问题中的几个会趋于缩小数据库的选择范围,但是与制定LAMP堆栈时相比,我们有更多选择。如果您要构建一个应用程序,并且该应用程序必须在99999%的时间内对全世界的用户都具有高度的一致性,那么只有少数几个数据库适合您。如果您的应用程序将在工作日的上午9点至下午6点在一个国家/地区使用,并且可以容忍最终的一致性,那么几乎所有数据库都可以使用,尽管某些数据库对于开发人员和 *** 作员而言更容易,而某些数据库则可以为您的主要使用场景提供更好的性能。

虽然LAMP和MEAN堆栈一次是Web应用程序的良好解决方案,但现在都不是最佳选择。而不是盲目采用任何一种,您应该仔细考虑用例,并找到一种可在可预见的将来为您的应用程序服务的体系结构。

您什么时候需要关系数据库(例如MySQL)用于新应用程序?除了对标准SQL的明显支持外,关系数据库本身将数据强制为具有一致的强类型字段的表格模式,并且只要您利用规范化就可以帮助您避免数据重复。

另一方面,如果您还需要偶尔的自由格式文档,则MySQL和许多其他关系数据库也支持RFC 7159定义的JSON数据。如果您还想使用XML文档和XPath或XSLT,则大多数关系数据库都可以提供这种能力。

您何时需要像MongoDB这样的文档数据库?如果您的主要用例需要允许使用自由格式的数据,在文档之间更改类型的字段,随时间变化的架构或嵌套的文档,则NoSQL数据库将满足要求。另外,如果您的应用程序是用JavaScript编写的,那么文档数据库的JSON格式将很自然。

作者: Martin Heller是InfoWorld的特约编辑和审稿人。他曾担任Web和Windows编程顾问,从1986年至2010年开发数据库,​​软件和网站。最近,他担任Alpha Software技术和教育副总裁以及Tubifi董事长兼首席执行官。

以上就是关于如何用Java *** 作MongoDB全部的内容,包括:如何用Java *** 作MongoDB、为什么mongodb不能替代elasticsearch区别、【mongoDB】mongoDB根据时间条件查询等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/sjk/9728979.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存