is an open source database management system (DBMS) that uses a document-oriented database model which supports various forms of data
Non Relational Database
Stores data in collection of documents
is a computer data interchange format. The name "BSON" is based on the term JSON and stands for Binary JSON ..
Similar to JSON with added data types
Create Or Switch Database
db.createCollection('posts')
db.posts.insert({
title: 'Post One',
body: 'Body of post one',
category: 'News',
tags: ['news', 'events'],
user: {
name: 'John Doe',
status: 'author'
},
date: Date()
})
db.posts.insertMany([
{
title: 'Post Two',
body: 'Body of post two',
category: 'Technology',
date: Date()
},
{
title: 'Post Three',
body: 'Body of post three',
category: 'News',
date: Date()
},
{
title: 'Post Four',
body: 'Body of post three',
category: 'Entertainment',
date: Date()
}
])
db.posts.find({ category: 'News' })
# asc
db.posts.find().sort({ title: 1 }).pretty()
# desc
db.posts.find().sort({ title: -1 }).pretty()
db.posts.find().count()
db.posts.find({ category: 'news' }).count()
db.posts.find().limit(2).pretty()
db.posts.find().limit(2).sort({ title: 1 }).pretty()
db.posts.find().forEach(function(doc) {
print("Blog Post: " + doc.title)
})
db.posts.findOne({ category: 'News' })
db.posts.find({ title: 'Post One' }, {
title: 1,
author: 1
})
db.posts.update({ title: 'Post Two' },
{
title: 'Post Two',
body: 'New body for post 2',
date: Date()
},
{
upsert: true
})
db.posts.update({ title: 'Post Two' },
{
$set: {
body: 'Body for post 2',
category: 'Technology'
}
})
db.posts.update({ title: 'Post Two' },
{
$inc: {
likes: 5
}
})
db.posts.update({ title: 'Post Two' },
{
$rename: {
likes: 'views'
}
})
db.posts.remove({ title: 'Post Four' })
db.posts.update({ title: 'Post One' },
{
$set: {
comments: [
{
body: 'Comment One',
user: 'Mary Williams',
date: Date()
},
{
body: 'Comment Two',
user: 'Harry White',
date: Date()
}
]
}
})
Find By Element in Array ($elemMatch)
db.posts.find({
comments: {
$elemMatch: {
author: 'Mary Williams'
}
}
}
)
db.posts.createIndex({ title: 'text' })
db.posts.find({
$text: {
$search: "\"Post O\""
}
})
db.posts.find({ views: { $gt: 2 } })
db.posts.find({ views: { $gte: 7 } })
db.posts.find({ views: { $lt: 7 } })
db.posts.find({ views: { $lte: 7 } })