深入解析MongoDB中insert?into?select寫法
MongoDB概念
MongoDB 是一個文檔數(shù)據(jù)庫(以 JSON 為數(shù)據(jù)模型),由 C++ 語言編寫,旨在為 WEB 應(yīng)用提供可擴展的高性能數(shù)據(jù)存儲解決方案。
MongoDB 是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,數(shù)據(jù)格式是BSON ,一種類似 JSON 的二進制形式的存儲格式,簡稱Binary JSON ,和 JSON 一樣支持內(nèi)嵌的文檔對象和數(shù)組對象,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。MongoDB 最大的特點是它支持的查詢語言非常強大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。原則上 Oracle 和 MySQL 能做的事情, MongoDB 都能做(包括 ACID 事務(wù))。
MongoDB特點:
半結(jié)構(gòu)化,在一個集合中,文檔所擁有的字段并不需要是相同的,而且也不需要對所用的字段進行聲明。
弱關(guān)系, MongoDB沒有外鍵的約束,也沒有非常強大的表連接能力。
優(yōu)勢:
MongoDB 基于靈活的 JSON 文檔模型,非常適合敏捷式的快速開發(fā)。與此同時,其與生俱來的高可用、 高水平擴展能力使得它在處理海量、高并發(fā)的數(shù)據(jù)應(yīng)用時頗具優(yōu)勢。
MongoDB中insert into select寫法
創(chuàng)建測試數(shù)據(jù)
use testdb
db.test_t.insertOne({_id:1,name:'zhangsan',age:30});
db.test_t.insertOne({_id:2,name:'lisi',age:33});
db.test_t.insertOne({_id:3,name:'wangwu',age:23});
db.test_t.insertOne({_id:4,name:'zhaoliu',age:26});
db.test_t.insertOne({_id:5,name:'sunqi',age:25});
db.test_t.insertOne({_id:6,name:'zhouba',age:23});
db.test_t.insertOne({_id:7,name:'wujiu',age:24});
db.test_t.insertOne({_id:8,name:'zhengshi',age:29});方法1:使用 aggregate 和 insert 實現(xiàn)
語法:
db.sourceCollection.aggregate([
{ $match: { /* 查詢條件 */ } }, // 查詢條件,可以根據(jù)需要設(shè)置
{ $project: { /* 可選:選擇需要的字段 */ } },
{ $merge: { into: "targetCollection" } } // 將查詢結(jié)果插入到目標(biāo)集合
])解釋:
aggregate():通過聚合管道查詢sourceCollection中的數(shù)據(jù)。$match:你可以在這里定義查詢條件(類似 SQL 中的WHERE)。$project:用來選擇字段,類似于 SQL 中的SELECT。$merge:將查詢結(jié)果插入到targetCollection中,相當(dāng)于 SQL 中的INSERT INTO。
示例:
db.test_t.aggregate([
{ $match: {"_id": {$lte: 3}} }, // 獲取_id小于等于3的文檔
{ $merge: { into: "student" } } // 將數(shù)據(jù)插入到 student 中
])注意:
$merge在 MongoDB 4.2 及以上版本中可用。如果你使用的是較低版本的 MongoDB,可能需要先查詢數(shù)據(jù),然后通過應(yīng)用邏輯(例如,使用insertMany)將數(shù)據(jù)插入目標(biāo)集合。$merge會根據(jù)目標(biāo)集合的不同配置(如whenMatched和whenNotMatched)對數(shù)據(jù)進行合并或者插入。你可以根據(jù)需要選擇合適的選項。
方法2:先查詢,再手動插入
// 查詢數(shù)據(jù)
const data = db.sourceCollection.find({ /* 查詢條件 */ }).toArray();
// 將查詢到的數(shù)據(jù)插入到 targetCollection
db.targetCollection.insertMany(data);示例
const data = db.test_t.find({ "_id": {$lte: 3} }).toArray();
db.student.insertMany(data);到此這篇關(guān)于MongoDB中insert into select寫法的文章就介紹到這了,更多相關(guān)MongoDB insert into select內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MongoDB Windows安裝服務(wù)方法與注意事項
這篇文章主要介紹了MongoDB Windows安裝服務(wù)方法與注意事項的相關(guān)資料,MongoDB作為一個基于分布式文件存儲的數(shù)據(jù)庫,近兩年大受追捧。數(shù)據(jù)靈活的存取方式和高效的處理使得它廣泛用于互聯(lián)網(wǎng)應(yīng)用,需要的朋友可以參考下2016-12-12
MongoDB學(xué)習(xí)筆記—Linux下搭建MongoDB環(huán)境
本篇文章主要介紹了Linux下搭建MongoDB環(huán)境,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11
Mongodb數(shù)據(jù)庫兩種啟動方法小結(jié)
MongoDB是一種開源的服務(wù)器端NoSQL數(shù)據(jù)庫管理系統(tǒng),它提供了一種靈活的框架,可以快速地存儲、處理和管理大量的數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于Mongodb數(shù)據(jù)庫兩種啟動方法的相關(guān)資料,需要的朋友可以參考下2023-12-12
將MongoDB加入到Windows的本地服務(wù)項的方法
下面主要針對MongoDB在Windows下加入本地服務(wù)項做一些簡單的分享。以方便剛接觸MongoDB并在Windows環(huán)境下進行開發(fā)的同學(xué)2014-08-08

