Express使用MongoDB經常使用操做

const MongoClient = require('mongodb').MongoClient

const url = "mongodb://localhost:27017"
const dbName = 'express-project'

// 鏈接數據庫
MongoClient.connect(url, { useNewUrlParser: true }, (err, client) => {
  if (err) throw err
  console.log('數據庫已鏈接')
  const db = client.db(dbName)
  // 建立集合
  db.createCollection("user", (err, res) => {
    if (err) throw err
    console.log('成功建立集合')
  })
  db.createCollection("alias", (err, res) => {
    if (err) throw err
    console.log('成功建立集合')
  })
  // ----------------------插入一條數據
  let user = db.collection("user")
  let alias = db.collection("alias")
  let myInfo = { name: '賈克斯', age: 18 }
  user.insertOne(myInfo, (err, res) => {
    if(err) throw err
    console.log('成功插入一條數據')
  })
  alias.insertOne({_id: 1}, (err, res) => {
    if(err) throw err
    console.log('成功插入一條數據')
  })

  // ----------------------插入多條數據, insertMany()
  let myFriends = [
    { name: '菲奧娜', age: 20 },
    { name: '傑斯', age: 19 },
    { name: '弗拉基米爾', age: 25}
  ]
  user.insertMany(myFriends, (err, res) => {
    if(err) throw err
    console.log(`成功插入${res.insertedCount}條數據!`)
  })

  // ----------------------查詢數據, find(condition)
  user.find({ name: '賈克斯' }).toArray((err, docs) => {
    console.log('有以下數據:')
    console.log(docs)
  })

  // ----------------------多表聯查,左鏈接查詢
  user.aggregate([
    {
      $lookup:{
        from: 'alias', //左查詢集合
        localField: 'alias_id', // 本地字段
        foreignField: '_id', // 對應本地字段的左查詢集合字段
        as: 'userlist'
      }
    }
  ]).toArray((err, docs) => {
    if (err) throw err
    var jsonDoc = JSON.stringify(docs)
    console.log(jsonDoc)
  })

  // ----------------------更新單條數據
  alias.updateOne({ "_id": 1 }, {$set:{ "alias": "武器大師"}}, (err, res) => {
    if (err) throw err
    console.log("文檔更新成功")
  })

  // ----------------------更新多條數據
  user.updateMany({ "age": 18 }, { $set: { "relationship": "opponent"}}, (err, res) => {
    if (err) throw err
    console.log(`${res.result.nModified}條文檔被更新了`)
  })

  // ----------------------刪除單條數據
  user.deleteOne({name: "傑斯"}, (err, res) => {
    if (err) throw err
    console.log(`已刪除`)
  })

  // ----------------------刪除多條數據
  user.deleteMany({age: 18}, (err, res) => {
    if (err) throw err
    console.log('已刪除');
  })

  // ----------------------刪除一個集合
  user.drop((err, res) => {
    if (err) throw err;
    console.log('已刪除集合')
    client.close()
  })
})
相關文章
相關標籤/搜索