DB Intro - MongoDB Basic
mongoDB basic
from:http://www.tutorialspoint.com/mongodb
prject:https://github.com/chenxing12/l4mongodb
Overview
MongoDB is a cross-platform, document oriented database that provides, high
performance, high availability, and easy scalability. MongoDB works on concept
of collection and document.
Database
Database is a physical container for collections. Each database gets its own set
of files on the file system. A single MongoDB server typically has multiple
databases.
Collection
Collection is a group of MongoDB documents. It is the equivalent of an RDBMS
table. A collection exists within a single database. Collections do not enforce
a schema. Documents with a collection can have different fields. Typically, all
documents in a collection are of similar or related purpose.
Document
A document is a set of key-value pairs. Documents have dynamic schema. Dynamic
schema means that documents in the same collection do not need to have the same
set of fields or structure, and common fields in a collection's documents may
hold different types of data.
Below given table shows the relationship of RDBMS terminology with MongoDB
| RDBMS | MongoDB |
|---|---|
| Database | Database |
| Table | Collection |
| Tuple/Row | Document |
| column | Field |
| Table Join | Embedded Documents |
| Table Join | Primary Key(Default key _id provided by mongodb itself) |
Sample document
Below given example shows the document structure of a blog site which is simply
a comma separated key value pair.
{
_id: ObjectId(7df78ad8902c)
title: 'MongoDB Overview',
description: 'MongoDB is no sql database',
by: 'tutorials point',
url: 'http://www.tutorialspoint.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100,
comments: [
{
user:'user1',
message: 'My first comment',
dateCreated: new Date(2011,1,20,2,15),
like: 0
},
{
user:'user2',
message: 'My second comments',
dateCreated: new Date(2011,1,25,7,45),
like: 5
}
]
}
Getting-Start
Database
check all the databases:
> show dbs
local 0.000GB
mrf 0.000GB
test 0.005GB
create database: for example create mydb
> use mydb
switched to db mydb
> show dbs
local 0.000GB
mrf 0.000GB
test 0.005GB
The database mydb has not been created, because the db is empty,
You must create at lest one collection next.For example:
>
> use mydb
switched to db mydb
> show dbs
local 0.000GB
mrf 0.000GB
test 0.005GB
>
> show collections
> db.user.insert({name:"Ryan"})
WriteResult({ "nInserted" : 1 })
> show dbs
local 0.000GB
mrf 0.000GB
mydb 0.000GB
test 0.005GB
check current database:
> db
mydb
switch db:
> db
mydb
> use test
switched to db test
> db
test
drop database:
> show dbs
local 0.000GB
mrf 0.000GB
mydb 0.000GB
test 0.005GB
> use mydb
switched to db mydb
> db.dropDatabase()
{ "dropped" : "mydb", "ok" : 1 }
> show dbs;
local 0.000GB
mrf 0.000GB
test 0.005GB
collection
create collection
when you insert data, if the collection not exists, it will be created automatically:
> show collections
restaurants
test
> db.mycollection.insert({name:"test"})
WriteResult({ "nInserted" : 1 })
> show collections
mycollection
restaurants
test
Of course, there is other way to create a specify collection:
Syntax
Basic syntax of createCollection() command is as follows:
db.createCollection(name, options)
In the command, name is the name of collection created, Options is a document
and used to specify configuration of collection.
Options parameter is optional, so you need to specify only name of the collection.
Following is the list of options you can use:
| Filed | Type | Description |
|---|---|---|
| capped | Boolean | (Optional) If true, enables a capped collection. Capped collection is a collection fixed size collection that automatically overwrites its oldest entries when it reaches its maximum size. If you sepecify true, you need specify size parameter too |
| autoIndexID | Boolean | (Optional) If true, automatically create index on _id filed. Default value is false |
| size | number | (Optional) Specify a maximum size in bytes for a capped collection. If capped is true, then you need specify this filed also |
| max | number | (Optional) Specifies the maximum number of documents allowed in the capped collection. |
while inserting the document , MongoDB first checks size filed of capped collection, then it checks max filed.
Example
> db.mycollection.drop()
true
> show collections
restaurants
test
>
>
> db.createCollection("mycollection")
{ "ok" : 1 }
> show collections
mycollection
restaurants
test
>
> db.createCollection("mycol",{capped:true,autoIndexID:true,size:6142800, max:10000})
{ "ok" : 1 }
> show collections
mycol
mycollection
restaurants
test
>
drop()
> use test
switched to db test
> show collections
mycol
mycollection
restaurants
test
> db.mycol.drop()
true
> show collections
mycollection
restaurants
test
DataType
MongoDB supports many datatypes whose list is given below:
String : This is most commonly used datatype to store the data. String in mongodb must be UTF-8 valid.
Integer : This type is used to store a numerical value. Integer can be 32 bit or 64 bit depending upon your server.
Boolean : This type is used to store a boolean (true/ false) value.
Double : This type is used to store floating point values.Min/ Max keys : This type is used to compare a value against the lowest and highest BSON elements.
Arrays : This type is used to store arrays or list or multiple values into one key.
Timestamp : ctimestamp. This can be handy for recording when a document has been modified or added.
Object : This datatype is used for embedded documents.
Null : This type is used to store a Null value.
Symbol : This datatype is used identically to a string however, it's generally reserved for languages that use a specific symbol type.
Date : This datatype is used to store the current date or time in UNIX time format. You can specify your own date time by creating object of Date and passing day, month, year into it.
Object ID: This datatype is used to store the document’s ID.
Binary data : This datatype is used to store binay data.
Code : This datatype is used to store javascript code into document.
Regular expression : This datatype is used to store regular expression
Insert
MongoDB insert option:
> show dbs;
local 0.000GB
mrf 0.000GB
test 0.005GB
> use test
switched to db test
> show collections;
mycollection
restaurants
test
>
>
> db.mycollection.insert({
title:"MongoDB Overview",
description:'MongoDB is no sql database',
by:'tutorials point',
url:'http://www.tutorialspoint.com',
tags:['mongodb','database','NoSQL'],
likes:100
})
WriteResult({ "nInserted" : 1 })
>
> db.mycollection.find()
{ "_id" : ObjectId("577e0dce99da0904659393c0"), "title" : "MongoDB Overview", "description" : "MongoDB is no sql databas
e", "by" : "tutorials point", "url" : "http://www.tutorialspoint.com", "tags" : [ "mongodb", "database", "NoSQL" ], "lik
es" : 100 }
> db.mycollection.find().pretty()
{
"_id" : ObjectId("577e0dce99da0904659393c0"),
"title" : "MongoDB Overview",
"description" : "MongoDB is no sql database",
"by" : "tutorials point",
"url" : "http://www.tutorialspoint.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
>
Here mycollections is our collection name, as created in previous tutorial. If the
collection doesn't exist in the database, then MongoDB will create this collection
adn then insert document into it.
In the inserted document if we don't specify the _id parameter, then MongoDB
assigns an unique ObjectId for this document.
_id is 12 bytes hexadecimal number unique for every document in a collection.
12 Bytes are dived as follows :
_id: ObjectId(4 bytes timestamp, 3 bytes machine id, 2 bytes process id, 3 bytes incrementer)
To insert multiple documents in single query, you can pass an array of documents
in insert() command.
Example
db.post.insert([
{
title: 'MongoDB Overview',
description: 'MongoDB is no sql database',
by: 'tutorials point',
url: 'http://www.tutorialspoint.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
},
{
title: 'NoSQL Database',
description: 'NoSQL database doesn\'t have tables',
by: 'tutorials point',
url: 'http://www.tutorialspoint.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 20,
comments: [
{
user:'user1',
message: 'My first comment',
dateCreated: new Date(2013,11,10,2,35),
like: 0
}
]
}
])
find()
The find() Method
To query data from MongoDB collection, you need to user MongoDB's find() method.
Syntax
Basic syntax of find() method id as follows:
db.collection_name.find()
find()method will display all the documents in a non structured way.
The pretty() Method
To display the results in a formatted way, you can use pretty() method.
db.collection_name.find().pretty()
Example
> show collections
mycollection
post
restaurants
test
> db.post.find().pretty()
{
"_id" : ObjectId("577e11fd502847799b05f062"),
"title" : "MongoDB Overview",
"description" : "MongoDB is no sql database",
"by" : "tutorials point",
"url" : "http://www.tutorialspoint.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
{
"_id" : ObjectId("577e11fd502847799b05f063"),
"title" : "NoSQL Database",
"description" : "NoSQL database doesn't have tables",
"by" : "tutorials point",
"url" : "http://www.tutorialspoint.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 20,
"comments" : [
{
"user" : "user1",
"message" : "My first comment",
"dateCreated" : ISODate("2013-12-10T10:35:00Z"),
"like" : 0
}
]
}
>
RDBMS Where Clause Equivalents in MongoDB
To query the document on the basis of some codition, you can use following
options:
| Options | Syntax | Example | RDBMS Equivalent |
|---|---|---|---|
| Equal | {\<key\>:\<value\>} | db.mycol.find({'by':'abc'}).pretty() | where by='abc' |
| Less Than | {\<key\>:{$lt:\<value\>}} | db.mycol.find({'likes':{$lt:50}}).pretty() | where likes < 50 |
| Less Than Equals | {\<key\>:{$lte:\<value\>}} | db.mycol.find({'likes':{$lte:50}}).pretty() | where likes <= 50 |
| Greater Than | {\<key\>:{$gt:\<value\>}} | db.mycol.find({'likes':{$gt:50}}).pretty() | where likes > 50 |
| Greater Than Equals | {\<key\>:{$gte:\<value\>}} | db.mycol.find({'likes':{$gte:50}}).pretty() | where likes >= 50 |
| Not Equals | {\<key\>:{$ne:\<value\>}} | db.mycol.find({'likes':{$ne:50}}).pretty() | where likes != 50 |
Example
> db.mycol.find().pretty()
{
"_id" : ObjectId("577e19c5502847799b05f064"),
"title" : "MongoDB Overview",
"description" : "MongoDB is no sql database",
"by" : "tutorials point",
"url" : "http://www.tutorialspoint.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
{
"_id" : ObjectId("577e19c5502847799b05f065"),
"title" : "NoSQL Database",
"description" : "NoSQL database doesn't have tables",
"by" : "tutorials point",
"url" : "http://www.tutorialspoint.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 20,
"comments" : [
{
"user" : "user1",
"message" : "My first comment",
"dateCreated" : ISODate("2013-12-10T10:35:00Z"),
"like" : 0
}
]
}
>
> db.mycol.find({'likes':{$gt:50}}).pretty()
{
"_id" : ObjectId("577e19c5502847799b05f064"),
"title" : "MongoDB Overview",
"description" : "MongoDB is no sql database",
"by" : "tutorials point",
"url" : "http://www.tutorialspoint.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
> db.mycol.find({'likes':{$lt:50}}).pretty()
{
"_id" : ObjectId("577e19c5502847799b05f065"),
"title" : "NoSQL Database",
"description" : "NoSQL database doesn't have tables",
"by" : "tutorials point",
"url" : "http://www.tutorialspoint.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 20,
"comments" : [
{
"user" : "user1",
"message" : "My first comment",
"dateCreated" : ISODate("2013-12-10T10:35:00Z"),
"like" : 0
}
]
}
AND in MongoDB
Syntax
In the find() method if you pass multiple keys by separating them by ',' then
MongoDB treats itAND condition. Basic syntax of AND is shown below:
db.mycol.find({ keys:value, key2:value2 }).pretty()
Example:
Below given example will show all the tutorials written by and
whose title is 'MongoDB OVerview':
> db.mycol.find({"by":"tutorials point","title":"MongoDB Overview"}).pretty()
{
"_id" : ObjectId("577e19c5502847799b05f064"),
"title" : "MongoDB Overview",
"description" : "MongoDB is no sql database",
"by" : "tutorials point",
"url" : "http://www.tutorialspoint.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
For the above given example equivalent where clause will bewhere by='tutorials point' AND title = 'MongoDB Overview'.
You can pass any number of key, value pairs in find clause.
OR in MongoDB
Syntax
To query documents based on the OR condition, you need to use $or keyword.
Basic syntax of OR is shown below −
>db.mycol.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
Example
> db.mycol.find(
{
$or:[
{"title":"MongoDB Overview"},{"likes":20}
]
}).pretty()
{
"_id" : ObjectId("577e19c5502847799b05f064"),
"title" : "MongoDB Overview",
"description" : "MongoDB is no sql database",
"by" : "tutorials point",
"url" : "http://www.tutorialspoint.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
{
"_id" : ObjectId("577e19c5502847799b05f065"),
"title" : "NoSQL Database",
"description" : "NoSQL database doesn't have tables",
"by" : "tutorials point",
"url" : "http://www.tutorialspoint.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 20,
"comments" : [
{
"user" : "user1",
"message" : "My first comment",
"dateCreated" : ISODate("2013-12-10T10:35:00Z"),
"like" : 0
}
]
}
Using AND and OR together
####Example
Below given example will show the documents that have likes greater than 10
and whose title is either 'MongoDB Overview' or by is 'tutorials point':
Equals:where likes>10 AND (by = 'tutorials point' OR title = 'MongoDB Overview')
> db.mycol.find({
"likes": {$gt:10},
$or: [
{"by": "tutorials point"}, {"title": "MongoDB Overview"}
]
}).pretty()
{
"_id" : ObjectId("577e19c5502847799b05f064"),
"title" : "MongoDB Overview",
"description" : "MongoDB is no sql database",
"by" : "tutorials point",
"url" : "http://www.tutorialspoint.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
{
"_id" : ObjectId("577e19c5502847799b05f065"),
"title" : "NoSQL Database",
"description" : "NoSQL database doesn't have tables",
"by" : "tutorials point",
"url" : "http://www.tutorialspoint.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 20,
"comments" : [
{
"user" : "user1",
"message" : "My first comment",
"dateCreated" : ISODate("2013-12-10T10:35:00Z"),
"like" : 0
}
]
}
DB Intro - MongoDB Basic的更多相关文章
- DB Intro - MongoDB User
MongoDB 3.0 用户创建 摘要: MongoDB 3.0 安全权限访问控制,在添加用户上面3.0版本和之前的版本有很大的区别,这里就说明下3.0的添加用户的方法. 环境.测试: 在安装Mo ...
- DB Intro - MongoDB Relations
https://www.quackit.com/mongodb/tutorial/mongodb_create_a_relationship.cfm
- MongoDB - basic
mongoDB basic from:http://www.tutorialspoint.com/mongodb prject:https://github.com/chenxing12/l4mong ...
- DB Intro - MySQL and MongoDB
mysql> CREATE TABLE tutorials_tbl( tutorial_id INT, tutorial_title VARCHAR(100), tutorial_author ...
- [React] 04 - Intro: mongoDB becomes popular
Ref: Linux平台安装MongoDB - 菜鸟教程 安装:sudo apt-get install mongodb 安装完毕产生: ls /etc/init.d/mongodb 配置:vim / ...
- mongodb数据库调试问题:‘db object already connecting, open cannot be called multiple times’
在微博小系统的调试过程中: (1)登入登出可以正常显示,就是在注册的时候网络连接突然停止,但是用户名和密码已经存入数据库中,报错为:undefined is not a function 错误主要指向 ...
- 连接有密码的mongodb
mongoose: db.openSet("mongodb://admin:pass@192.168.1.100:27017/mydb");
- [Reproduced works]MongoDB Unauthorized Access Vulnerability
mongodb未授权访问漏洞 catalogue 1. mongodb安装 2. 未授权访问漏洞 3. 漏洞修复及加固 4. 自动化检测点 1. mongodb安装 apt-get install m ...
- mongodb未授权访问漏洞
catalogue . mongodb安装 . 未授权访问漏洞 . 漏洞修复及加固 . 自动化检测点 1. mongodb安装 apt-get install mongodb 0x1: 创建数据库目录 ...
随机推荐
- EBS登陆界面个性化
把完整资料贴出来 Set the profile option Local Login Mask (FND_SSO_LOCAL_LOGIN_MASK). (This profile option is ...
- 合成(Composite)模式
一. 合成(Composite)模式 合成模式有时又叫做部分-整体模式(Part-Whole).合成模式将对象组织到树结构中,可以用来描述整体与部分的关系. 合成模式可以使客户端将单纯元素与复合元素同 ...
- TSQL--SET ANSI_NULLS OFF
当ANSI_NULLS 为ON时,遵循SQL92的标准,只能使用IS NULL 来判断值是否为NULL, 而不能使用=或<>来与NULL做比较,任何值包括NULL值与NULL值做=或< ...
- Java Script 脚本的几种基本格式:
1. <script> document.Write("Hello wrrld!!!"); </script> 2. <scrip ...
- 分享我的第一个asp.net core开发过程
.net core 这个东西感觉还是很不错的,学习了一下,并且做了一个微服务(IP地址查询服务) http://vju.cc/ip/ipquery 看上他的跨平台功能,所以就研究一下,中间有不少坑,有 ...
- 关于PHP中的Trait
今天看PHP框架,看到Trait部分.没见过,好奇查了一下. PHP手册说的是解决多继承的问题.但是一般面向对象的语言中,解决多继承都是通过接口,PHP也有接口.貌似看上去Trait和Interfac ...
- leecode刷题(2)-- 买卖股票的最佳时机
买卖股票的最佳时机 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多 ...
- 洛谷P4557 [JSOI2018]战争(闵可夫斯基和+凸包)
题面 传送门 题解 看出这是个闵可夫斯基和了然而我当初因为见到这词汇是在\(shadowice\)巨巨的\(Ynoi\)题解里所以压根没敢学-- 首先您需要知道这个 首先如果有一个向量\(w\)使得\ ...
- LNMP之Php的安装配置
此配置的编译参数是: ./configure --prefix=/opt/php7.2.3 --with-openssl --with-zlib --with-curl --enable-ftp -- ...
- 【离散数学】 SDUT OJ 1.1联结词真值运算
1.1联结词真值运算 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 已知命题变元p和 ...