이 기사는 MongoDB에서 CRUD (Create, Read, Update 및 Delete) 작업을 수행하는 것을 자세히 설명합니다. 인덱싱, Batch Operatio를 포함한 효율적인 작업을위한 insertone (), find (), updateone (), deleteone () 및 모범 사례와 같은 메소드를 사용하여 다룹니다.
이 섹션에서는 MongoDB에서 CRUD (Create, Read, Update 및 Delete) 작업을 수행하는 방법에 대해 자세히 설명합니다. _id
, name
, price
및 description
필드가 포함 된 문서와 함께 "Products"라는 컬렉션의 예를 사용하겠습니다.
문서 작성 : 새 문서 (삽입)를 만들려면 insertOne()
메소드 (단일 문서의 경우) 또는 insertMany()
(여러 문서의 경우)를 사용합니다. 다음은 MongoDB 쉘을 사용하는 예입니다.
<code class="javascript">db.products.insertOne( { name: "Laptop", price: 1200, description: "Powerful laptop" } ) db.products.insertMany( [ { name: "Tablet", price: 300, description: "Android tablet" }, { name: "Keyboard", price: 75, description: "Mechanical keyboard" } ] )</code>
이 코드는 하나의 노트북 문서를 삽입 한 다음 단일 작업에 여러 문서 (태블릿 및 키보드)를 삽입합니다. _id
필드는 제공되지 않으면 자동으로 생성됩니다. 드라이버 별 구현은 각 드라이버 insertOne()
또는 insertMany()
메소드를 사용하여 유사합니다.
문서 읽기 : 문서를 읽으면 find()
사용하여 컬렉션을 쿼리하는 것입니다. 특정 문서를 검색하기 위해 필터를 지정할 수 있습니다. 예를 들어:
<code class="javascript">// Find all products db.products.find() // Find products with price less than 500 db.products.find( { price: { $lt: 500 } } ) // Find a single product by its ID db.products.findOne( { _id: ObjectId("...") } ) // Replace ... with the actual ObjectId</code>
find()
커서를 반환하여 결과를 반복 할 수 있습니다. findOne()
쿼리와 일치하는 단일 문서를 반환합니다. 다시, 드라이버 구현에는 동등한 방법이 있습니다.
문서 업데이트 : MongoDB는 문서를 업데이트하는 몇 가지 방법을 제공합니다. updateOne()
단일 문서를 업데이트하고 updateMany()
는 여러 문서를 업데이트합니다. $set
연산자를 사용하여 필드를 수정합니다.
<code class="javascript">// Update the price of a specific product db.products.updateOne( { name: "Laptop" }, { $set: { price: 1300 } } ) // Increase the price of all products by 10% db.products.updateMany( {}, { $inc: { price: { $multiply: [ 0.1, "$price" ] } } } )</code>
첫 번째 예제는 노트북의 가격을 업데이트합니다. 두 번째 예제는 $inc
운영자를 사용하여 모든 제품의 가격을 증분합니다. $push
, $pull
, $addToSet
등과 같은 다른 업데이트 운영자를 사용하여보다 복잡한 업데이트를 달성 할 수 있습니다.
문서 삭제 : deleteOne()
단일 문서를 제거하고 deleteMany()
여러 문서를 제거합니다.
<code class="javascript">// Delete a specific product db.products.deleteOne( { name: "Keyboard" } ) // Delete all products with price greater than 1000 db.products.deleteMany( { price: { $gt: 1000 } } )</code>
이 명령은 제공된 기준에 따라 문서를 제거합니다.
효율적인 CRUD 운영에는 몇 가지 요인을 신중하게 고려해야합니다.
find()
작업 속도를 높이십시오. 인덱스는 관계형 데이터베이스의 지수와 유사합니다. 쿼리를 기반으로 적절한 인덱스 유형 (예 : 단일 필드, 복합, 지리 공간)을 선택하십시오.insertMany()
, updateMany()
및 deleteMany()
사용하여 단일 배치로 여러 문서에서 작업을 수행하여 개별 작업에 비해 성능을 크게 향상시킵니다.$where
사용하지 마십시오. 대신 $gt
, $lt
, $in
등과 같은 운영자를 사용하여 인덱스를 효과적으로 활용하십시오. 적절한 프로젝션 ( { _id: 0, name: 1, price: 1 }
)을 사용하여 필요한 필드 만 검색하여 데이터 전송을 줄입니다.강력한 MongoDB 응용 프로그램의 경우 오류 처리가 중요합니다. 드라이버는 CRUD 작업 중에 예외를 잡고 처리하는 메커니즘을 제공합니다.
try-catch
블록 내에서 CRUD 작업을 래핑하여 네트워크 문제, 유효하지 않은 데이터 또는 데이터베이스 오류와 같은 잠재적 오류를 처리합니다.CRUD 작업을 수행하는 특정 방법은 사용 된 드라이버에 따라 약간 다릅니다. 다음은 Node.js 및 Python에 대한 간단한 개요입니다.
node.js ( mongodb
드라이버 사용) :
<code class="javascript">const { MongoClient } = require('mongodb'); // ... connection code ... const client = new MongoClient(uri); async function run() { try { await client.connect(); const db = client.db('mydatabase'); const collection = db.collection('products'); // ... CRUD operations using collection.insertOne(), collection.find(), etc. ... } finally { await client.close(); } } run().catch(console.dir);</code>
Python ( pymongo
드라이버 사용) :
<code class="python">import pymongo # ... connection code ... client = pymongo.MongoClient(uri) db = client['mydatabase'] collection = db['products'] # ... CRUD operations using collection.insert_one(), collection.find(), etc. ... client.close()</code>
두 예 모두 기본 구조를 보여줍니다. 사용 가능한 방법 및 옵션에 대한 자세한 정보는 특정 드라이버의 문서를 참조하십시오. uri
와 같은 자리 표시자를 실제 연결 문자열로 교체해야합니다.
위 내용은 MongoDB에서 문서 (CRUD) 문서를 작성, 읽기, 업데이트 및 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!