当我们要向MongoDB插入数据,数据格式就是document。
document的数据结构和JSON基本一样。
Python的dictionaries和ruby的hashes都是例子。 这个部分主要讲解MongoDB数据的插入。
Document-Orientation面向文档
面向文档的数据库存储document,但是这个document是一个结构document。
这个词汇可能来自XML document。
然而其他结构的数据格式如JASON,有相似的属性。
MongoDB的document是类似JSON的数据结构。 JSON 是一个存储对象风格数据绝佳方法。
它独立于语言以及基于标准的。
为了效率,MongoDB使用的是BSON。是一个二进制描述数据的协议。
BSON检索字段要明显快于JSON。同时BSON也添加了更多的数据类型如date类型和二进制类型。
BSON读起来和JSON一样并且也可以和其他多种语言的数据结构相对应。
客户端驱动序列化数据为BSON。之后再把数据传输到db中。
存储在硬盘上的数据格式就是BSON。获取的时候,也不要太复杂,效率很高。
客户端驱动反序列化BSON对象,转为自己语言的格式。
JSON
举例,下列 "document" 可以被存储在MongoDB中:
{ author: 'joe',
created : new Date('03/28/2009'),
title : 'Yet another blog post',
text : 'Here is the text...',
tags : [ 'example', 'joe' ],
comments : [ { author: 'jim', comment: 'I disagree' },
{ author: 'nancy', comment: 'Good post' }
]
}
这个文档是一个blog post。因此我们可以把它保存到posts collection中。
> doc = { author : 'joe', created : new Date('03/28/2009'), ... }
> db.posts.insert(doc);
MongoDB了解BSON对象内部构造-不仅仅存储它们。可以通过内部字段和索引来进行查询。如
> db.posts.find( { "comments.author" : "jim" } )
意思就是 "查询评论作者为jim的posts"。
有好的MongoDB Schema
MongoDB可以用在很多的场景,并且使用起来和关系型数据库还是很相似的。
MongoDB设计的目标是存储复杂对象。
存储的例子
如果你要创建一个在线商店并且进行买卖。关系型设计如下
item title price sku item_features sku
feature_name feature_value
有可能要进行范式化,因为不同的items有不同的features,
并且你不想在一张表保存所有的features。在MongoDB中很容易做到,还更有效率。
item : {
"title" : <title> ,
"price" : <price> ,
"sku" : <sku> ,
"features" : {
"optical zoom" : <value> , ...
} }
这样做有几个优点
- 一条语句查询出整个记录。
- 保存一个item的所有数据都保存在相同的硬盘空间上。只需要一次查找就可以了。
看起来还有一些的问题
- 你可能向插入或更新一个文档。MongoDB可以操作内嵌document
db.items.update( { sku : 123 } , { "$set" : { "features.zoom" : "5" } } )
- 添加一个feature需要在硬盘上移动整个对象么?答案是不。
- MongoDB会预留空间给要增长的对象。 这样做还能避免索引更新。
相关推荐
在IT行业中,MongoDB是一种非常流行的NoSQL数据库系统,它以JSON-like文档格式存储数据,非常适合处理大量非结构化或半结构化的数据。本话题主要关注如何使用Python语言来向MongoDB中插入记录。我们将通过分析`app....
插入数据通常涉及创建一个`Document`对象并调用`insertOne()`或`insertMany()`方法: ```java Document doc = new Document("name", "John").append("age", 30); collection.insertOne(doc); ``` 5. **查询...
上述代码定义了一个名为`MongoDBDAO`的类,它包含了连接数据库、插入数据、查询数据、更新数据和删除数据的方法。`connect()`方法用于建立到MongoDB服务器的连接,`close()`方法则用于断开连接。其他方法分别对应了...
MongoDB是一种流行的开源、分布式文档型数据库,常用于构建高性能、可扩展的数据存储解决方案。集成MongoDB到项目中,特别是与JavaScript一起使用,是许多Web开发者的选择,因为JavaScript是MongoDB的主要交互语言,...
MongoDB则是一种流行的开源、无模式的分布式文档数据库,常用于处理大量数据。当结合使用Node.js和MongoDB时,可以构建高性能、可扩展的数据驱动的Web应用。本篇文章将深入探讨如何在Node.js环境中操作MongoDB。 ...
与传统的SQL数据库不同,MongoDB使用文档型数据模型,支持JSON(JavaScript Object Notation)格式的数据存储,这使得它非常适合处理半结构化和动态模式的数据。在Node.js环境中,MongoDB提供了官方驱动MongoDB Node...
3. **插入文档(Inserting Documents)**:向集合中插入数据,可以使用`InsertOne`或`InsertMany`方法。以下示例展示了如何插入单个文档: ```go document := bson.D{{"key", "value"}} result, err := collection....
例如,创建一个名为 `users` 的集合并插入一条用户数据: ```javascript const usersCollection = db.collection('users'); const user = { name: 'John Doe', email: 'john.doe@example.com', age: 30 }; ...
当我们谈论“NodeWithMongoDBConnection”时,我们关注的是如何在Node.js环境中建立与MongoDB的数据连接。以下是对这一主题的详细阐述。 首先,要使用Node.js连接MongoDB,我们需要一个驱动程序。MongoDB官方提供了...
向集合中插入文档(数据): ```javascript collection.insertOne({ name: 'John Doe', age: 30 }, (err, result) => { if (err) { console.error('Error inserting document:', err); } else { console.log('...
在这个项目中,我们将深入探讨如何在Node.js环境中与MongoDB交互,以便开发高效、可扩展的数据驱动应用程序。MongoDB是一个流行的开源NoSQL数据库,以其灵活性、高性能和易于使用而闻名。Node.js则是JavaScript运行...