Skip to content

MongoDB – Clone collection ด้วยการระบุ query

ใน MongoDB คำสั่ง cloneCollection()  ใช้สำหรับการ copy collection มี options ให้ใส่ query เพิ่ม filter document ได้เหมือนกันแต่เป็นการ copy จาก remote host มาที่ local ถ้าเราต้องการ copy บนเครื่องเดียวกันคำสั่งนี้ก็ไม่ตรงกับความต้องการของเราแล้วและเท่าที่หาข้อมูลเพิ่มเติมก็ยังไม่มีคำสั่งที่ทำงานแบบนี้โดยตรงแต่เราสามารถจัดการได้ด้วย Javascript interface ใน Mongodb shell ได้

> db.SrcColl.find({ field : "..." }).forEach( function(doc) { db.DesColl.insert(doc) })

คำสั่งข้างบนก็ใช้เหมือนกันการ query ด้วย find()  ปกติ MongoDB จะคืนค่ามาเป็น array ของ documents ที่พบซึ่งสามรถใช้ forEach()  วนรอบ insert()  ลงไปอีก collection ได้

Note: จาก document นี้ บอกว่า process นี้จะมีการ decode จาก BSON เป็น JSON ซึ่งอาจทำให้ type บางประเภทใช้ไม่ได้หรือ miss ไป ถ้ามีการใช้ type พิเศษให้ใช้ mongodump  นำข้อมูลออกไปทั้งก้อนแล้วใช้ mongorestore  import ข้อมูลแทน

 

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.