Concept
Structure:
Database -> Collection -> Documents
Compare to Mysql:
- Collection VS. Table
- Document VS. Row
- Field VS. Column
Collection is not strict about what goes in it
Operations
Databases
// create database if it's not exists create it then switch current database
use mydb
// show current database
db
// list dbs , if there's not document inside , database won't show up
show dbs
// insert document
db.mycollection.insert({"name": "Black"})
show dbs
// drop database
db.dropDatabase()
show dbs
Collections
use mydb
// create collection if it's not exists create it
// db.createCollection("myCollection")
db.createCollection("myCollection1")
// show collections
show collections
// insert to collection
// db.myCollection.insert({"name": "Black"})
// remove collection
db.myCollection1.drop()
show collections
Documents
Insert
insert document with bring an extra Field named _id
, it’s unique
use school
// insert single document
db.students.insert(
{
"StudentNo": "1",
"FirstName": "Mark",
"LastName": "Waugh",
"Age": "10"
}
)
// insert multiple document
db.students.insert([
{
"StudentNo": "2",
"FirstName": "qwe",
"LastName": "123",
"Age": "12"
},
{
"StudentNo": "3",
"FirstName": "wrfewfg",
"LastName": "fewgfre",
"Age": "14"
},
])
Query
use school
// query collections
// db.students.find()
// query collections in json format
// db.students.find().pretty()
// query the first document
// db.students.findOne()
// query with condition
db.students.find(
{
// "StudentNo": "2"
// "Age": {
// $gt: "10",
// $lte: "14",
// }
// AND
// LastName: "123",
// Age: "12"
// OR
// $or: [
// {
// "LastName": "123"
// },
// {
// "Age": "14"
// }
// ]
// AND with OR
// "StudentNo": "3",
// $or: [
// {
// "Age": "13"
// },
// {
// "Age": "14"
// }
// ]
}
)
Update
use school
// db.students.find(
// {
// "_id": ObjectId("5c89cb76b032936d265eedb2")
// }
// )
// // Update field
// db.students.update(
// {
// "_id": ObjectId("5c89cb76b032936d265eedb2"), // condition
// },
// {
// $set: { // fields that you want to update
// "FirstName": "Adam",
// "LastName": "Levine"
// }
// }
// )
// db.students.find(
// {
// "_id": ObjectId("5c89cb76b032936d265eedb2")
// }
// )
// multiple update
// db.students.update(
// {
// "Age": {
// $ne: "10"
// }
// },
// {
// $set: {
// "Age": "16"
// }
// },
// {
// "multi": true
// }
// )
// save operation
// db.students.save({"_id":ObjectId("5c
db.students.find()
Delete
use school
db.students.find()
// remove all documents
// db.students.remove()
// remove with conditions
// db.students.remove(
// {
// "_id": ObjectId("5c89ea3bb032936d265eedb5")
// }
// )
// remove only 1 document
// db.students.remove(
// {
// "Age": {
// $eq: "16"
// }
// },
// 1
// )
Projection
What is Projection
projection in mongodb means selecting necessary data rather than selecting whole of the data of a document
db.students.find(
{},
{
// "FirstName": 1, // only show FirstName
// "_id": 0, // do not show "_id" field
// "LastName": 0 // only hide "LastName", the others just show like normal
}
)
Sort, Skip, Limit
use school
// db.students.find()
// limit
// db.students.find(
// {},
// {
// "StudentNo": 1,
// "FirstName": 1,
// "_id": 0,
// }
// ).limit(2)
// skip the first document && limit
// db.students.find(
// {},
// {
// "StudentNo": 1,
// "FirstName": 1,
// "_id": 0,
// }
// ).skip(
// 1
// ).limit(
// 1
// )
// sort
// db.students.find(
// {},
// {
// "StudentNo": 1,
// "FirstName": 1,
// "_id": 0,
// }
// ).sort(
// {
// "StudentNo": -1 // in reverse, 1 in order
// }
// )
Indexing
use "school"
// insert huge data
// for (var i=0; i < 150000; ++i) {
// db.posts.insert(
// {
// "student_id": i,
// "name": "Mark"
// }
// )
// }
// without indexing(nvme disk) - 0.076s
// db.posts.find(
// {
// "student_id": 10000
// }
// )
// with findone(nvme disk) - 0.022s
// db.posts.findOne(
// {
// "student_id": 10000
// }
// )
// create index
// db.posts.createIndex(
// {
// "student_id": 1, // ignore Capitalization, strength of indexing
// // "student_id": 2
// },
// {
// "background": false, // build the index in the background
// "unique": true
// }
// )
// get indexes
// db.posts.getIndexes()
// with indexing(nvme disk) - 0.020s
// db.posts.find(
// {
// "student_id": 10000
// }
// )
// with indexing(nvme disk) - 0.018s
// db.posts.findOne(
// {
// "student_id": 10000
// }
// )
// remove index
// db.posts.dropIndex(
// {
// "student_id": 1
// }
// )
// db.posts.getIndexes()
Aggregation
What is Aggregation
aggreation operation group multiple documents fields together, return computed results
use school
// db.students.find()
// db.students.update(
// {},
// {
// $set: {
// "Gender": "Female",
// "Age": 17
// }
// },
// {
// "multi": true
// }
// )
// db.students.update(
// {
// "_id": ObjectId("5c89ea3bb032936d265eedb5")
// },
// {
// $set: {
// "Gender": "Male",
// "Age": 13
// }
// },
// {
// "multi": false
// }
// )
// group by gender get count
// db.students.aggregate(
// [
// {
// $group: {
// "_id": "$Gender",
// "Numbers": {
// $sum: 1
// }
// }
// }
// ]
// )
// get max age
// db.students.aggregate(
// [
// {
// $group: {
// "_id": "$Gender",
// "MaxAge": {
// $max: "$Age"
// },
// "MinAge": {
// $min: "$Age"
// }
// }
// }
// ]
// )
Backup && Restore
# dump
> mongodump --db school
# restore
> mongorestore --db school dump/school
# dump collection
> mongodump --db school --collection students
> mongorestore --db school --collection students dump/school/students.bson
哇,很久之前的博友了,最近换玉米了 麻烦更新下 方块网络 -> http://www.cyanProbe.com 多谢
好的没问题朋友
文章不错非常喜欢
文章不错支持一下吧