當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Mongoose Aggregate prototype.unionWith()用法及代碼示例


Mongoose API 的 Aggregate API.prototype.unionWith() 方法用於執行聚合任務。它允許我們組合兩個集合的管道結果以獲得單個結果集。但是,它還允許結果集中出現重複值。未指定順序。

用法:

aggregate.unionWith( options )

參數:該方法接受如上所述和下麵討論的單個參數:

  • options:它接受一個帶有兩個參數的對象,即要用來執行聯合操作的集合名稱和管道數組。

返回值:該方法以數組的形式返回組合結果集。

設置 Node.js 應用程序:

步驟 1:使用以下命令創建 Node.js 應用程序:

npm init

步驟 2:創建 NodeJS 應用程序後,使用以下命令安裝所需的模塊:

npm install mongoose

項目結構: 項目結構將如下所示:

數據庫結構:數據庫結構如下所示,集合中存在以下文檔。

示例 1:在此示例中,我們使用 mongoose 建立了數據庫連接並定義了模型板球運動員圖式,具有三列或字段“_id”、“name”和“nationality”。我們定義的另一個模式是iplPlayerSchema,具有四個列或字段“_id”、“name”、“teamName”和“nationality”。最後,我們使用aggregate()方法通過選擇 “nationality” 和 “_id” 字段板球運動員模型並將其存儲到總計的多變的。對此總計的變量,我們正在訪問unionWith()方法,並在其參數中,我們發送另一個集合名稱來執行聯合操作並獲得一個組合結果集

文件名:app.js

Javascript


// Require mongoose module 
const mongoose = require("mongoose"); 
  
// Set Up the Database connection 
mongoose.connect("mongodb://localhost:27017/geeksforgeeks", { 
    useNewUrlParser: true, 
    useUnifiedTopology: true, 
}); 
  
const cricketerSchema = new mongoose.Schema({ 
    _id: Number, 
    name: String, 
    nationality: String 
}); 
  
const iplPlayerSchema = new mongoose.Schema({ 
    _id: Number, 
    name: String, 
    teamName: String, 
    nationality: String 
}); 
  
const Cricketer = mongoose.model('Cricketers', cricketerSchema); 
const IplPlayer = mongoose.model('IplPlayers', iplPlayerSchema); 
  
const aggregate = Cricketer.aggregate( 
    [{ $project: { nationality: 1, _id: 0 } }] 
) 
  
aggregate.unionWith({ 
    coll: "iplplayers", 
    pipeline: [{ $project: { _id: 0, nationality: 1 } }] 
}).then(result => { 
    console.log(result) 
}).catch(err => { 
    console.log(err) 
})

運行程序的步驟:要運行應用程序,請從項目的根目錄執行以下命令:

node app.js

輸出:

[
  { nationality: 'India' },       
  { nationality: 'Australia' },   
  { nationality: 'England ' },    
  { nationality: 'India' },       
  { nationality: 'South Africa' },
  { nationality: 'Bangladesh' }   
]

示例 2:在此示例中,我們在單個組合結果集中獲取兩個集合的所有字段。為了實現這一點,我們隻需要將“coll”值提供給unionWith()方法。

文件名:app.js

Javascript


// Require mongoose module 
const mongoose = require("mongoose"); 
  
// Set Up the Database connection 
mongoose.connect("mongodb://localhost:27017/geeksforgeeks", { 
    useNewUrlParser: true, 
    useUnifiedTopology: true, 
}); 
  
const cricketerSchema = new mongoose.Schema({ 
    _id: Number, 
    name: String, 
    nationality: String 
}); 
  
const iplPlayerSchema = new mongoose.Schema({ 
    _id: Number, 
    name: String, 
    teamName: String, 
    nationality: String 
}); 
  
const Cricketer = mongoose.model('Cricketers', cricketerSchema); 
const IplPlayer = mongoose.model('IplPlayers', iplPlayerSchema); 
  
const aggregate = Cricketer.aggregate() 
  
aggregate.unionWith({ coll: "iplplayers" }) 
    .exec((err, result) => { 
        if (err) { 
            console.log(err) 
        } else { 
            console.log(result) 
        } 
    })

運行程序的步驟:要運行應用程序,請從項目的根目錄執行以下命令:

node app.js

輸出:

[
  { 
      _id: 1, name: 'Virat Kohli', 
      nationality: 'India', 
      __v: 0 
  },     
  { 
      _id: 2, 
      name: 'David Warner', 
      nationality: 'Australia', 
      __v: 0 
  },
  { 
      _id: 3, 
      name: 'Ben Stokes', 
      nationality: 'England ', 
      __v: 0 
  },   
  {
    _id: 1,
    name: 'Rohit Sharma',
    teamName: 'Mumbai Indians',
    nationality: 'India',
    __v: 0
  },
  {
    _id: 2,
    name: 'David Miller',
    teamName: 'Chennai Super Kings',
    nationality: 'South Africa',
    __v: 0
  },
  {
    _id: 3,
    name: 'Shakib Al Hasan',
    teamName: 'Kolkata Knight Riders',
    nationality: 'Bangladesh',
    __v: 0
  }
]

參考:https://mongoosejs.com/docs/api/aggregate.html#aggregate_Aggregate-unionWith



相關用法


注:本文由純淨天空篩選整理自kartikmukati大神的英文原創作品 Mongoose Aggregate prototype.unionWith() API。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。