Skip to content

Tag: mongodb

MongoDB | find() ด้วย Regular Expression แบบไหน ใช้/ไม่ใช้ index

จริงๆ ผมว่าจะเขียนรื่องนี้นานแล้วแต่เดือนที่ผ่านมา (กันยายน) งานยุ่งๆ ระเบียบวินัยก็ค่อนข้างแย่ ทั้งออกกำลังกายและเขียนบล็อก เดือนที่แล้วเลยไม่ได้เขียนอะไรเป็นชิ้นเป็นอัน ขอยกยอดมาเขียน (แบบอู้ๆ อีกนั่นแหละ) เดือนนี้แล้วกัน

คำสั่ง find() ของ MongoDB นั้นรองรับการ query ด้วย Regular Expression โดยสามารถเขียน syntax แบบ PCRE (Perl Compatible Regular Expression) ตัวอย่างเช่น

MongoDB: ปัญหา write performance ช้าลงเมื่อทำ index หลาย field

ผมอ่าน release note ของ MongoDB 3.0 ไปบ้างแล้ว เหตุที่ MongoDB 3.0 ต้องปรับปรุงประสิทธิภาพการเขียนข้อมูล, การทำ index และเปิดให้ใช้ storage engine ตัวใหม่เพื่อรองรับงานที่มีการเขียนหนักๆ (ยกตัวอย่างเช่น IoT) เพราะหากมีการทำ index หลาย field และมีการ insert เข้ามาเร็วๆ ความเร็วในการ insert จะลดลงค่อนข้างเห็นได้ชัด

วันนี้เจอกับตัวเองเลยครับ จริงๆ Official document ก็เตือนไว้แต่เนื่องจากคนมันดื้อเลยใช้ต่อ (สมน้ำหน้า :p) แต่ใช้ไปใช้มาแล้วมันช้าพาลหงุดหงิดเลยต้องแก้ปัญหาเฉพาะหน้าไปก่อน โดยการ drop index ทิ้งไปก่อน insert เสร็จแล้วค่อยสั่ง ensureIndex() อีกครั้ง (ช้า-เร็วแล้วแต่ปริมาณข้อมูล) หรือถ้าเป็นแอปพลิเคชันที่จำเป็นต้องทำงานอยู่ตลอดอาจจะต้องทำ replication หรือแยกเป็น 2 ก้อน ก้อนนึงใช้เก็บอย่างเดียว อีกก้อนก็ทำ index ใช้งานปกติ

Nodejs and MongoDB real-time push

พอดีได้ทำโปรเจกต์แนวๆ นี้เลยแงะเอา code บางส่วนมาปล่อย เป็น real-time push service ที่เขียนด้วย Nodejs+Socket.io ใช้งานร่วมกับ MongoDB ครับ ผม push code ทั้งหมดไว้บน Github แล้ว รายละเอียดอ่านจาก README.md ได้เลยครับ (ภาษาอังกฤษกากหน่อยขออภัย -/\- ) Project…

Pattern การสร้าง real-time application ด้วย Node.js และ MongoDB

real-time app (ผมหมายถึง web application และ service ทั่วไปด้วยอะนะ) ถ้าหาข้อมูลตามอินเทอร์เน็ต เครื่องมือที่นิยมใช้งานคงหนีไม่พ้น Node.js, Socket.io สำหรับฐานข้อมูลอาจจะมีแนะนำให้เลือกใช้แตกต่างกันไปบ้างตามแต่ละงาน แต่ส่วนมากก็จะเป็นพวก NoSQL

โพสต์นี้ถ้าบันทึกโดยอ้างอิงจาก Node.js, Socket.io และ MongoDB เป็นหลักเพราะเป็นเครื่องมือที่เอามาใช้งานบ่อย

หลักการทำ real-time และคุณสมบัติเครื่องมือที่ผม survey ดูสรุปเป็นข้อๆ ตามนี้

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

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

Nodejs and Mongoose MongoDB ODM

Mongoose เป็น ODM (Object Document Mapping) ตัวหนึ่งของ Mongodb จริงๆ ก็ไม่ใช่อะไรใหม่ หน้าที่ของมันก็เหมือนกับ ORM ฝั่ง DBMS เลยครับแต่นี่เป็นของ NoSQL และที่เป็น “Object Document Mapping” เพราะว่า MongoDB เป็น NoSQL ที่เก็บข้อมูลแบบ Document Store ซึ่งเป็นรูปแบบหนึ่งของ NoSQL

การทำงานของ Object mapping คือ การสร้าง object ความสัมพันธ์, โครงสร้างของข้อมูลใน database เวลาเรียกใช้ก็เรียกเหมือนการ access class หรือ object ลดการเขียนคำสั่ง SQL หรือคำสั่งสำหรับ query ลง

[PHP] ใช้ regex แบบ negative lookahead ใน MongoDB query

syntax regex ใน PHP อ้างอิงตาม PCRE (Perl Compatible regular expression)  การ match ข้อความแบบ negative lookahead คือ match กับอักขระใดๆ ทั้งหมดยกเว้นตัวที่เรากำหนด งงใช่ไหม? คนอธิบายก็งง ดูตัวอย่างดีกว่า สมมุติว่าผมมี regex เป็น t(?!s) และมี text…