如今NoSql这么火热,假期闲来无事也来凑凑热闹,多学点儿是点儿,好处肯定有,坏处肯定没。。。。
选了大家谈论最多的mongodb来学习,先去www.mongodb.org
下载,安装就直接解压到你就好了。
假设windows 32bit机,建立目录D:\mongodb 把压缩包bin目录下的exe全部放到mongodb目录下,然后建立一个data文件夹(D:\mongodb\data) 这个data目录就是用来存放数据的,默认是C盘data\db目录。
bin目录下的
mongod.exe
- 数据库服务器.
mongo.exe
- 管理员shell
当我们使用自定义的数据存储文件目录D:\mongodb\data时,使用cmd 进入D:\mongdodb目录
输入mongod --dbpath
D:\mongodb\data用来启动时指定数据存储目录。
然后运行mongo.exe就行了。
使用help命令就可以查看所有想要得到的命令。
下面进入开发学习阶段:
其实我真的很想就复制粘贴官网的文档,因为真的很容易懂,都懒得翻译写出来了,唉。。。。。
启动之后,将看到
By default the shell connects to database "test" on localhost. You then see:
MongoDB shell version: <whatever>
url: test
connecting to: test
type "help" for help
>
"connecting to:
" 显示了正在连接和使用的数据库。想要使用其它库, 键入:
> use mydb
switched to db mydb
用use命令切换数据库并不能立即创建数据库,数据库将在第一次插入数据时延迟创建。可以使用show dbs查看数据库。
Inserting Data into A Collection
下面的shell命令,创建了两个对象j和t,并把它们存入sha0k集合中,K-V,就像map一样,称它集合,不为过吧。
> j = { name : "mongo" };
{"name" : "mongo"}
> t = { x : 3 };
{ "x" : 3 }
> db.sha0k.save(j);
> db.sha0k.save(t);
> db.sha0k.find();
{ "_id" : ObjectId("4f2167ee......"), "name" : "mongo" }
{ "_id" : ObjectId("4f2168f....."), "x" : 3 }
>
对象Id太长了,我没写完,然后再使用show dbs就可以看到mydb已经在数据库列表中了,库创建完成。
有几点是需要注意的(我是真的懒得翻译了,见谅):
- We did not predefine the collection. The database creates it automatically on the first insert.(没有预先定义集合)
- The documents we store can have different fields - in fact in this
example, the documents have no common data elements at all. In
practice, one usually stores documents of the same structure within
collections.()
- Upon being inserted into the database, objects are assigned an object ID
(if they do not already have one) in the field _id
.
- When you run the above example, your ObjectID values will be different.
一次添加多个对象:
> for (var i = 1; i <= 20; i++) db.sha0k.save({x : 4, j : i});
> db.sha0k.find();
{ "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" }
{ "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3 }
{ "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 }
{ "_id" : ObjectId("4c220a42f3924d31102bd857"), "x" : 4, "j" : 2 }
{ "_id" : ObjectId("4c220a42f3924d31102bd858"), "x" : 4, "j" : 3 }
{ "_id" : ObjectId("4c220a42f3924d31102bd859"), "x" : 4, "j" : 4 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85a"), "x" : 4, "j" : 5 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85b"), "x" : 4, "j" : 6 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85c"), "x" : 4, "j" : 7 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85d"), "x" : 4, "j" : 8 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85e"), "x" : 4, "j" : 9 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85f"), "x" : 4, "j" : 10 }
{ "_id" : ObjectId("4c220a42f3924d31102bd860"), "x" : 4, "j" : 11 }
{ "_id" : ObjectId("4c220a42f3924d31102bd861"), "x" : 4, "j" : 12 }
{ "_id" : ObjectId("4c220a42f3924d31102bd862"), "x" : 4, "j" : 13 }
{ "_id" : ObjectId("4c220a42f3924d31102bd863"), "x" : 4, "j" : 14 }
{ "_id" : ObjectId("4c220a42f3924d31102bd864"), "x" : 4, "j" : 15 }
{ "_id" : ObjectId("4c220a42f3924d31102bd865"), "x" : 4, "j" : 16 }
{ "_id" : ObjectId("4c220a42f3924d31102bd866"), "x" : 4, "j" : 17 }
{ "_id" : ObjectId("4c220a42f3924d31102bd867"), "x" : 4, "j" : 18 }
has more
我一共插入了20个数据,这里只显示了18个,并在下面提示has more,这是因为shell限制一个迭代的游标只到20,所以要查看下面的,需要使用it命令,iterator。。。。
{ "_id" : ObjectId("4c220a42f3924d31102bd866"), "x" : 4, "j" : 17 }
{ "_id" : ObjectId("4c220a42f3924d31102bd867"), "x" : 4, "j" : 18 }
has more
> it
{ "_id" : ObjectId("4c220a42f3924d31102bd868"), "x" : 4, "j" : 19 }
{ "_id" : ObjectId("4c220a42f3924d31102bd869"), "x" : 4, "j" : 20 }
Accessing Data From a Query
有没有发现刚的办法很麻烦,20多个我就得打次it,40多个打两次,依次类推。。。。
有没有简单的办法呢,那就来看下面的,刚刚提到,mongodb 找到的数据指向都是游标。
> var cursor = db.sha0k.find();
> while (cursor.hasNext()) printjson(cursor.next());
{ "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" }
{ "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3 }
{ "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 }
{ "_id" : ObjectId("4c220a42f3924d31102bd857"), "x" : 4, "j" : 2 }
{ "_id" : ObjectId("4c220a42f3924d31102bd858"), "x" : 4, "j" : 3 }
{ "_id" : ObjectId("4c220a42f3924d31102bd859"), "x" : 4, "j" : 4 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85a"), "x" : 4, "j" : 5 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85b"), "x" : 4, "j" : 6 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85c"), "x" : 4, "j" : 7 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85d"), "x" : 4, "j" : 8 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85e"), "x" : 4, "j" : 9 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85f"), "x" : 4, "j" : 10 }
{ "_id" : ObjectId("4c220a42f3924d31102bd860"), "x" : 4, "j" : 11 }
{ "_id" : ObjectId("4c220a42f3924d31102bd861"), "x" : 4, "j" : 12 }
{ "_id" : ObjectId("4c220a42f3924d31102bd862"), "x" : 4, "j" : 13 }
{ "_id" : ObjectId("4c220a42f3924d31102bd863"), "x" : 4, "j" : 14 }
{ "_id" : ObjectId("4c220a42f3924d31102bd864"), "x" : 4, "j" : 15 }
{ "_id" : ObjectId("4c220a42f3924d31102bd865"), "x" : 4, "j" : 16 }
{ "_id" : ObjectId("4c220a42f3924d31102bd866"), "x" : 4, "j" : 17 }
{ "_id" : ObjectId("4c220a42f3924d31102bd867"), "x" : 4, "j" : 18 }
{ "_id" : ObjectId("4c220a42f3924d31102bd868"), "x" : 4, "j" : 19 }
{ "_id" : ObjectId("4c220a42f3924d31102bd869"), "x" : 4, "j" : 20 }
第二行的printjson()函数,可以从环境中理解出来,就是将对象以json数据格式打印出来,上面的例子是游标风格的迭代。
> var cursor = db.sha0k.find();
> printjson(cursor[4]);
{ "_id" : ObjectId("4c220a42f3924d31102bd858"), "x" : 4, "j" : 3 }
When using a cursor this way, note that all values up to the highest
accessed (cursor[4] above) are loaded into RAM at the same time. This
is inappropriate for large result sets, as you will run out of memory.
Cursors should be used as an iterator with any query which returns a
large number of elements.(请注意内存溢出)
数组访问方式:
> var arr = db.sha0k.find().toArray();
> arr[5];
{ "_id" : ObjectId("4c220a42f3924d31102bd859"), "x" : 4, "j" : 4 }
Specifying What the Query Returns
SELECT * FROM things WHERE x=4
> db.sha0k.find({x:4}).forEach(printjson);
{ "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 }
{ "_id" : ObjectId("4c220a42f3924d31102bd857"), "x" : 4, "j" : 2 }
{ "_id" : ObjectId("4c220a42f3924d31102bd858"), "x" : 4, "j" : 3 }
{ "_id" : ObjectId("4c220a42f3924d31102bd859"), "x" : 4, "j" : 4 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85a"), "x" : 4, "j" : 5 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85b"), "x" : 4, "j" : 6 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85c"), "x" : 4, "j" : 7 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85d"), "x" : 4, "j" : 8 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85e"), "x" : 4, "j" : 9 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85f"), "x" : 4, "j" : 10 }
{ "_id" : ObjectId("4c220a42f3924d31102bd860"), "x" : 4, "j" : 11 }
{ "_id" : ObjectId("4c220a42f3924d31102bd861"), "x" : 4, "j" : 12 }
{ "_id" : ObjectId("4c220a42f3924d31102bd862"), "x" : 4, "j" : 13 }
{ "_id" : ObjectId("4c220a42f3924d31102bd863"), "x" : 4, "j" : 14 }
{ "_id" : ObjectId("4c220a42f3924d31102bd864"), "x" : 4, "j" : 15 }
{ "_id" : ObjectId("4c220a42f3924d31102bd865"), "x" : 4, "j" : 16 }
{ "_id" : ObjectId("4c220a42f3924d31102bd866"), "x" : 4, "j" : 17 }
{ "_id" : ObjectId("4c220a42f3924d31102bd867"), "x" : 4, "j" : 18 }
{ "_id" : ObjectId("4c220a42f3924d31102bd868"), "x" : 4, "j" : 19 }
{ "_id" : ObjectId("4c220a42f3924d31102bd869"), "x" : 4, "j" : 20 }
A query document of the form { a:A, b:B, ... } means "where a==A and b==B and ...".
使用true关键字,只查找j的值结果集
SELECT j FROM things WHERE x=4
> db.sha0k.find({x:4}, {j:true}).forEach(printjson);
{ "_id" : ObjectId("4c220a42f3924d31102bd856"), "j" : 1 }
{ "_id" : ObjectId("4c220a42f3924d31102bd857"), "j" : 2 }
{ "_id" : ObjectId("4c220a42f3924d31102bd858"), "j" : 3 }
{ "_id" : ObjectId("4c220a42f3924d31102bd859"), "j" : 4 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85a"), "j" : 5 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85b"), "j" : 6 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85c"), "j" : 7 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85d"), "j" : 8 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85e"), "j" : 9 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85f"), "j" : 10 }
{ "_id" : ObjectId("4c220a42f3924d31102bd860"), "j" : 11 }
{ "_id" : ObjectId("4c220a42f3924d31102bd861"), "j" : 12 }
{ "_id" : ObjectId("4c220a42f3924d31102bd862"), "j" : 13 }
{ "_id" : ObjectId("4c220a42f3924d31102bd863"), "j" : 14 }
{ "_id" : ObjectId("4c220a42f3924d31102bd864"), "j" : 15 }
{ "_id" : ObjectId("4c220a42f3924d31102bd865"), "j" : 16 }
{ "_id" : ObjectId("4c220a42f3924d31102bd866"), "j" : 17 }
{ "_id" : ObjectId("4c220a42f3924d31102bd867"), "j" : 18 }
{ "_id" : ObjectId("4c220a42f3924d31102bd868"), "j" : 19 }
{ "_id" : ObjectId("4c220a42f3924d31102bd869"), "j" : 20 }
休息了~~~~明天再学。。。。
分享到:
相关推荐
在本实验中,我们将学习如何在 Windows 和 Linux 环境下安装 MongoDB,并了解 MongoDB 的基本操作。 一、MongoDB 安装 ### Windows 环境下安装 MongoDB 1. 下载 MongoDB Windows 版 2. 设置数据文件和日志文件的...
MongoDB 是一种流行的开源、高性能、无模式的文档型数据库,设计用于处理和存储大量数据。...通过其直观的命令行接口和强大的查询语言,MongoDB 提供了一个易于学习和使用的环境,使得开发者可以轻松地管理和操作数据。
2024全网最全-MongoDB学习资料、安装教程,是一份集学习和安装为一体的资源。MongoDB是一款基于分布式文件存储的数据库系统,由于其高效、高性能、高可用等特点而备受关注。该资源收集了众多MongoDB的学习资料和安装...
MongoDB是一款开源、高性能、无模式的文档型数据库,常用于大数据存储和处理。...通过以上内容,相信您已经对MongoDB的安装、基本操作和常见应用场景有了初步的认识。祝您学习愉快,如有疑问,欢迎继续探讨。
本压缩包“MongoDB学习文档.zip”包含了一个名为“MongoDB学习文档.docx”的文件,该文件很可能是对MongoDB的基础知识、安装配置、操作指南以及Java API使用的详细介绍。 MongoDB的核心特性包括其灵活性、高可用性...
MongoDB是一款流行且功能强大...了解并掌握MongoDB的安装、使用和管理技巧,是成为高效数据处理专家的重要一步。在学习过程中,参考“mongoDB安装及使用指南”这份资料,能帮助你更深入地理解和实践MongoDB的相关操作。
学习MongoDB的过程中,建议先从安装和基本操作开始,然后逐渐深入到高级特性如分片和复制集。实践是提升技能的关键,可以尝试创建数据库、插入和查询数据,再逐步学习如何处理更复杂的数据操作和系统管理。同时,...
5. **可视化操作**:"MongoDB介绍和安装,插件可视化操作.zip"这个文件名表明可能包含关于MongoDB的可视化工具的教程,比如如何使用插件来提升MongoDB的管理和操作体验。 6. **CRUD操作**:`MongoDB-crud-guide.pdf...
通过以上步骤的学习和实践,您将能够熟练地在Linux环境中安装和使用MongoDB,同时也能更加深入地了解其核心功能和技术细节。这对于开发者来说是非常有价值的技能,可以帮助他们在项目开发过程中更高效地处理大量非...
本安装文档将详述在各种操作系统上安装MongoDB的步骤,并提供启动和管理MongoDB的基本方法。 首先,让我们从准备工作开始。在安装MongoDB之前,确保你的计算机满足其系统需求,通常包括支持的操作系统(如Windows、...
### MongoDB学习手册精要知识点概览 #### 一、MongoDB简介 MongoDB,源于英文单词“humongous”,意指其设计初衷在于处理海量数据。作为一款开源、面向文档的NoSQL数据库,MongoDB凭借其灵活性和高性能,迅速成为...
通过上述步骤,你已经成功地在 Windows 系统上安装了 MongoDB 数据库,并且了解了如何启动、验证安装以及进行一些基本的配置操作。MongoDB 提供了丰富的功能和灵活的数据模型,非常适合用于快速开发原型应用或构建大...
一旦MongoDB安装完毕并成功启动,接下来就可以学习如何进行基本的操作了。 ##### 1. 连接到MongoDB 在终端中输入以下命令即可连接到MongoDB shell。 ```bash mongo ``` 成功连接后,你将看到MongoDB shell的提示...
每讲的标题可能代表一个具体的学习章节,例如"第一讲"可能是介绍MongoDB的基本概念,"第八讲"可能是讲解复制集或分片集群等高级主题。通过深入学习和实践,你可以有效地掌握这个强大的数据库系统。
这份“mongodb学习手册”可能涵盖了MongoDB的基本概念、安装配置、数据操作、查询优化、备份恢复、安全性以及一些高级特性,例如分片、复制集和聚合框架等内容。通过阅读这本手册,初学者可以快速理解MongoDB的工作...
以上是对MongoDB数据库及其安装的一般性介绍,通过深入学习提供的PPT资源,可以更详细地了解MongoDB的查询技巧、索引使用以及基本操作。在实践中,理解这些概念和技术对于有效管理和利用MongoDB数据库至关重要。
10. **MongoDB工具**:MongoDB提供了一系列的管理工具,如`mongo shell`、`mongodump/mongorestore`、`mongostat/mongotop`等,了解它们的用途和使用方法可以帮助更有效地管理和维护数据库。 11. **MongoDB驱动程序...
MongoDB 是一种流行的开源NoSQL数据库,以其面向文档的数据模型、高性能、高可用性和高可扩展性而闻名。它的设计目标是提供一个灵活且可扩展的解决方案,特别适合处理大量结构化和半结构化的数据。 在MongoDB中,...