1. 程式人生 > >nodejs漸入佳境[18]-mongodb-node增刪查改

nodejs漸入佳境[18]-mongodb-node增刪查改

1
> npm install --save mongodb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//mongodb 3以上寫法
const MongoClient = require('mongodb').MongoClient;

//TodoApp是一個數據庫名字,mongo中不需要建立資料庫
MongoClient.connect('mongodb://localhost:27017/TodoApp',(err,client)=>{
   if(err){

     return console.log('Unable to connect to MongoDB server');
   }
   console.log('Connect to MongoDB server');
 const db = client.db('TodoApp');

 //插入資料
 db.collection('Todos').insertOne({
   text:'Something to do',
   completed:false

 },(err,result)=>{
   if(err){
       return console.log('unable to insert todo',err);
   }
       console.log(JSON.stringify(result.ops,undefined,2));
 });
//關閉客戶端
 client.close();

});

id

插入一個物件的時候,會自動的產生一個隨機的id。id包含了時間戳和機器識別碼。
我們可以藉助與mongo的方法,為我們產生一個隨機數。

1
2
3
4
5
const {MongoClient,ObjectID} = require('mongodb');
var obj = new ObjectID();
console.log(obj);
//返回時間
console.log(obj.getTimestamp());

參考資料:
MongoDB Node.js Driver Documentation
node-mongodb-native

查詢

原始資料:

1
2
3
4
5
6
7
8
9
10
11
12
[
 {
   "_id": "5bee9e3794c5f22eb989f6eb",
   "text": "Something to do",
   "completed": false
 },
 {
   "_id": "5beeaf0a2d48eb2b7c90758f",
   "text": "Something to do",
   "completed": true
 }
]

js程式碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const {MongoClient,ObjectID} = require('mongodb');

MongoClient.connect('mongodb://localhost:27017/TodoApp',(err,client)=>{
   if(err){
     return console.log('Unable to connect to MongoDB server');
   }
   console.log('Connect to MongoDB server');
 const db = client.db('TodoApp');

 //返回所有document
 db.collection('Todos').find().toArray().then((docs)=>{
   console.log('Todos');
   console.log(JSON.stringify(docs,undefined,2));
 },(err)=>{
   console.log('unable to fetch todos', err);
 })

 client.close();
});

執行程式碼返回:

1
2
3
4
5
6
7
8
9
10
11
12
[
 {
   "_id": "5bee9e3794c5f22eb989f6eb",
   "text": "Something to do",
   "completed": false
 },
 {
   "_id": "5beeaf0a2d48eb2b7c90758f",
   "text": "Something to do",
   "completed": true
 }
]

篩選

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const {MongoClient,ObjectID} = require('mongodb');

MongoClient.connect('mongodb://localhost:27017/TodoApp',(err,client)=>{
   if(err){
     return console.log('Unable to connect to MongoDB server');
   }
   console.log('Connect to MongoDB server');
 const db = client.db('TodoApp');
 db.collection('Todos').find({completed:true}).toArray().then((docs)=>{
   console.log('Todos');
   console.log(JSON.stringify(docs,undefined,2));
 },(err)=>{
   console.log('unable to fetch todos', err);
 })

 client.close();

});

執行程式碼返回:

1
2
3
4
5
6
7
[
 {
   "_id": "5beeaf0a2d48eb2b7c90758f",
   "text": "Something to do",
   "completed": true
 }
]

篩選id

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const {MongoClient,ObjectID} = require('mongodb');

MongoClient.connect('mongodb://localhost:27017/TodoApp',(err,client)=>{
   if(err){
     return console.log('Unable to connect to MongoDB server');
   }
   console.log('Connect to MongoDB server');
 const db = client.db('TodoApp');
 db.collection('Todos').find({
   new ObjectID('5beeaf0a2d48eb2b7c90758f')
 }).toArray().then((docs)=>{
   console.log('Todos');
   console.log(JSON.stringify(docs,undefined,2));
 },(err)=>{
   console.log('unable to fetch todos', err);
 })

 client.close();

});

執行程式碼返回:

1
2
3
4
5
6
7
[
 {
   "_id": "5beeaf0a2d48eb2b7c90758f",
   "text": "Something to do",
   "completed": true
 }
]

刪除document

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const {MongoClient,ObjectID} = require('mongodb');

MongoClient.connect('mongodb://localhost:27017/TodoApp',(err,client)=>{
   if(err){
     return console.log('Unable to connect to MongoDB server');
   }
   console.log('Connect to MongoDB server');
 const db = client.db('TodoApp');
//  db.collection('Todos').deleteMany({text:'mike'});  刪除全部

//刪除一個
 // db.collection('Todos').deleteOne({text:'mike'}).then((result)=>{
 //     console.log(result);
 // });

//刪除並返回物件
 db.collection('Todos').findOneAndDelete({text:'mike'}).then((result)=>{
     console.log(result);
 });

 client.close();

});

更新

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const {MongoClient,ObjectID} = require('mongodb');

MongoClient.connect('mongodb://localhost:27017/TodoApp',(err,client)=>{
   if(err){
     return console.log('Unable to connect to MongoDB server');
   }
   console.log('Connect to MongoDB server');
 const db = client.db('TodoApp');

//查詢並更新
 db.collection('Todos').findOneAndUpdate({text:'mike'