浅谈MongoDB 关系_MongoDB

来源:脚本之家  责任编辑:小易  

本文主要讲2113述如何使用Java操作MongoDB以及5261了解MongoDB如何进行日常的数据库4102操作。文章内容1653如下:第一步:安装MongoDB无需太多的繁杂步骤,你只要在MongoDB官方网站查看安装说明,根据自己的操作系统进行选择适应的版本即可。第二步:启动MongoDB服务器这一步也很简单。运行mongod.exe文件里的bin文件夹(我使用的是Windows OS系统),并启动MongoDB服务器。在默认的情况下服务器将启动端口27017,你需要在安装过程中创建将数据存储在/data/db目录里。第三步:启动MongoDB shell指令你可以通过运行mongo.exe文件来启动MongoBD shell。第四步:利用MongoDB创建数据库利用MongoDB在MongoDB shell中输入以下内容建立一个名为“company”的数据库。use company 记住,除非你在MangoDB里保存了一些东西,否则它不会自动为你保存。使用下面的命令帮你查看可用的数据库,它会显示“company”尚未被创建。show dbs; 第五步:在MongoDB中保存数据使用下面的命令来保存employee 数据代表一个collection,将其命名为employees。employee = {name : "A", no : 1} db.employees.save(employee) 通过使用下面的命令来查看collection里的数据。db.users.find(); 如何使用Java操作MongoDB?下面是是一段简单的Java代码,你可以在这里获得mongo-java驱动。很简单,只需要使用下面的代码,重复上面的操作即可。package com.eviac.blog.mongo; import java.net.UnknownHostException; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.Mongo; import com.mongodb.MongoException; public class MongoDBClient { public static void main(String[] args) { try { Mongo mongo = new Mongo("localhost", 27017); DB db = mongo.getDB("company"); DBCollection collection = db.getCollection("employees"); BasicDBObject employee = new BasicDBObject(); employee.put("name", "Hannah"); employee.put("no", 2); collection.insert(employee); BasicDBObject searchEmployee = new BasicDBObject(); searchEmployee.put("no", 2); DBCursor cursor = collection.find(searchEmployee); while (cursor.hasNext()) { System.out.println(cursor.next()); } System.out.println("The Search Query has Executed!"); } catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace(); } } } 结果如下:{ "_id" : { "$oid" : "4fec74dc907cbe9445fd2d70"} , "name" : "Hannah" , "no" : 2} The Search Query has Executed! 小结:随着互联网Web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展也非常迅速。本文浅显的谈及了如何使用Java操作MongoDB以及了解MongoDB如何进行日常的数据库操作的问题。如果您是这方面的专家不妨与我们分享下。本文为CSDN编译整理,未经允许不得转载www.zgxue.com防采集请勿采集本网。

MongoDB 的关系表示多个文档之间在逻辑上的相互联系。

redis可以用hash存放简单关系型数据。mogodb存放json格式数据。适合场景:事件记录、内容管理或者博客平台,比如评论系统。nosq的产品目前很多,架构e799bee5baa6e997aee7ad94e58685e5aeb931333339653763

文档间可以通过嵌入和引用来建立联系。

2、Mongodb是“非关系”型的,所以以严格遵守范式所设计的关系型数据库进行移植时,需要考虑多表查询的效率。一般来讲,关系表要对数据进行冗余才能达到高效率的查询。你只能通过代码的方式将多个主表和

MongoDB 中的关系可以是: 1:1 (1对1) 1: N (1对多) N: 1 (多对1) N: N (多对多)

如楼上所言mongodb是非关系型数据库,优势用来存文档型数据,而非结构化数据。适用于网站数据库。以上仅供参考~

首先要确定,你们为什么需要将关系型数据库中的数据导入到NoSql数据库中?是为了达到什么样的需求才这么做的。我也是做开发的,我推荐以下几点,不要尝试将关系型数据库转换为非关系型数据库:1

接下来我们来考虑下用户与用户地址的关系。

如果是一对多,我知道可以用嵌套,但不知道如何处理多对多的关系,请指教。【来自山贼】问题解如何处理好多对多的关系可谓是NoSQL的精髓所在。理论上,可以在一个集合中完成存储,不过实际上这样的

一个用户可以有多个地址,所以是一对多的关系。

以下是 user 文档的简单结构:

{ "_id":ObjectId("52ffc33cd85242f436000001"), "name": "Tom Hanks", "contact": "987654321", "dob": "01-01-1991"}

以下是 address 文档的简单结构:

{ "_id":ObjectId("52ffc4a5d85242602e000000"), "building": "22 A, Indiana Apt", "pincode": 123456, "city": "Los Angeles", "state": "California"}

嵌入式关系

使用嵌入式方法,我们可以把用户地址嵌入到用户的文档中:

{ "_id":ObjectId("52ffc33cd85242f436000001"), "contact": "987654321", "dob": "01-01-1991", "name": "Tom Benzamin", "address": [ { "building": "22 A, Indiana Apt", "pincode": 123456, "city": "Los Angeles", "state": "California" }, { "building": "170 A, Acropolis Apt", "pincode": 456789, "city": "Chicago", "state": "Illinois" }]}

以上数据保存在单一的文档中,可以比较容易的获取和维护数据。 你可以这样查询用户的地址:

>db.users.findOne({"name":"Tom Benzamin"},{"address":1})

注意:以上查询中 db 和 users 表示数据库和集合。

这种数据结构的缺点是,如果用户和用户地址在不断增加,数据量不断变大,会影响读写性能。

引用式关系

引用式关系是设计数据库时经常用到的方法,这种方法把用户数据文档和用户地址数据文档分开,通过引用文档的 id 字段来建立关系。

{ "_id":ObjectId("52ffc33cd85242f436000001"), "contact": "987654321", "dob": "01-01-1991", "name": "Tom Benzamin", "address_ids": [ ObjectId("52ffc4a5d85242602e000000"), ObjectId("52ffc4a5d85242602e000001") ]}

以上实例中,用户文档的 address_ids 字段包含用户地址的对象id(ObjectId)数组。

我们可以读取这些用户地址的对象id(ObjectId)来获取用户的详细地址信息。

这种方法需要两次查询,第一次查询用户地址的对象id(ObjectId),第二次通过查询的id获取用户的详细地址信息。

>var result = db.users.findOne({"name":"Tom Benzamin"},{"address_ids":1})>var addresses = db.address.find({"_id":{"$in":result["address_ids"]}})

以上就是浅谈MongoDB 关系的详细内容,更多关于MongoDB 关系的资料请关注真格学网其它相关文章!

NoSQL数据库因其可扩展性使其变得越来越流行,利用NoSQL数据库可以给你带来更多的好处,MongoDB是一个用C++编写的可度可扩展性的开源NoSQL数据库。本文主要讲述如何使用Java操作MongoDB以及了解MongoDB如何进行日常的数据库操作。文章内容如下:第一步:安装MongoDB无需太多的繁杂步骤,你只要在MongoDB官方网站查看安装说明,根据自己的操作系统进行选择适应的版本即可。第二步:启动MongoDB服务器这一步也很简单。运行mongod.exe文件里的bin文件夹(我使用的是Windows OS系统),并启动MongoDB服务器。在默认的情况下服务器将启动端口27017,你需要在安装过程中创建将数据存储在/data/db目录里。第三步:启动MongoDB shell指令你可以通过运行mongo.exe文件来启动MongoBD shell。第四步:利用MongoDB创建数据库利用MongoDB在MongoDB shell中输入以下内容建立一个名为“company”的数据库。use company 记住,除非你在MangoDB里保存了一些东西,否则它不会自动为你保存。使用下面的命令帮你查看可用的数据库,它会显示“company”尚未被创建。show dbs;第五步:在MongoDB中保存数据使用下面的命令来保存employee 数据代表一个collection,将其命名为employees。employee={name:"A",no:1} db.employees.save(employee)通过使用下面的命令来查看collection里的数据。db.users.find();如何使用Java操作MongoDB?下面是是一段简单的Java代码,你可以在这里获得mongo-java驱动。很简单,只需要使用下面的代码,重复上面的操作即可。packagecom.eviac.blog.mongo;import java.net.UnknownHostException;importcom.mongodb.BasicDBObject;importcom.mongodb.DB;importcom.mongodb.DBCollection;importcom.mongodb.DBCursor;importcom.mongodb.Mongo;importcom.mongodb.MongoException;public class MongoDBClient { public static void main(String[]args){ try { Mongo mongo=new Mongo("localhost",27017);DB db=mongo.getDB("company");DBCollection collection=db.getCollection("employees");BasicDBObject employee=new BasicDBObject();employee.put("name内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • mongodb模糊查询操作案例详解(类关系型数据库的 like 和 not like)
  • mongodb与sql关系型数据比较
  • mongodb学习笔记(四) 用mongodb的文档结构描述数据关系
  • 1亿条记录的mongodb数据库随机查询性能测试
  • 基于mongodb数据库的数据类型和$type操作符详解
  • mongodb 集群重构和释放磁盘空间实例详解
  • mongodb运行日志实现自动分割的方法实例
  • mongodb 3.2.5安装详细过程
  • mongodb快速入门笔记(一)之windows下安装mongodb方法
  • mongodb的分片集群基本配置教程
  • mongodb多条件模糊查询示例代码
  • mongoose 在egg中的使用详解
  • java操作mongodb的模糊查询和精确查询
  • 浅谈如何用Java操作MongoDB?
  • 浅谈如何用Java操作MongoDB?
  • 浅谈如何用Java操作MongoDB?
  • mongodb底层使用松散的什么作为数据存储格式
  • redis和mongodb的区别
  • 关系型数据库Oracle的数据导入非关系型数据库mongodb。
  • mongodb是关系型数据库吗
  • mongodb中关系如何处理?要颠覆传统关系型数据库的思想吗
  • MongoDB如何处理多对多关系
  • mongodb 怎么读
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页mongodb模糊查询操作案例详解(类关系型数据库的 like 和 not like)mongodb与sql关系型数据比较mongodb学习笔记(四) 用mongodb的文档结构描述数据关系1亿条记录的mongodb数据库随机查询性能测试基于mongodb数据库的数据类型和$type操作符详解mongodb 集群重构和释放磁盘空间实例详解mongodb运行日志实现自动分割的方法实例mongodb 3.2.5安装详细过程mongodb快速入门笔记(一)之windows下安装mongodb方法mongodb的分片集群基本配置教程mongodb多条件模糊查询示例代码mongoose 在egg中的使用详解java操作mongodb的模糊查询和精确查询mongodb常用操作命令大全mongodb各种查询操作详解mongodb数据库插入、更新和删除操mongodb 数据库操作--备份 还原 mongodb插入数据的3种方法mongodb中使用distinct去重的简单mongodb整库备份与还原以及单个cmongodb查询操作限制返回字段的方浅谈mysql和mariadb区别(mariadbmongodb 实现远程连接mongodb的安装及配置文件选项全解mongodb服务端javascript脚本使用方法mongodb+php实现简单的增删改查mongodb中唯一索引(unique)的那些事mongodb driver使用代码详解mongodb的基础知识简介阿里云服务器安装mongodb的方法centos 7下mongodb开机无法自启动的解决方mongodb 快速入门使用zabbix监控mongodb的方法
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved