--- id: python-mongodb-find title: "Python MongoDB Find" category: "Programming_Language" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: ["find()", "find_one()", "projection", "파이썬 MongoDB 조회"] duplicate_of: "" source_trust_level: "B" confidence_score: 0.9 created_at: 2026-07-04 updated_at: 2026-07-04 review_reason: "" merge_history: [] tags: ["python", "mongodb", "w3schools", "find", "projection"] raw_sources: ["https://www.w3schools.com/python/python_mongodb_find.asp"] applied_in: [] github_commit: "" --- # [[Python MongoDB Find]] ## 🎯 한 줄 통찰 (One-line insight) The find() projection object can't mix 0s and 1s (except for `_id`) — including one field with `1` implicitly excludes everything else, while excluding one field with `0` implicitly includes everything else; mixing both raises an error. [S1] ## 🧠 핵심 개념 (Core concepts) - **`find_one()`** — returns the first matching document. [S1] - **`find()`** — returns ALL matching documents; empty query object = all documents (like `SELECT *`). [S1] - **Projection (2nd parameter)** — an object specifying which fields to include (`1`) or exclude (`0`); optional. [S1] - **`_id` exception** — the only field allowed to mix with either 0 or 1 alongside the other fields. [S1] - **Mixing 0 and 1 on non-`_id` fields is an error** — pick one style: either include specific fields (`1`) or exclude specific fields (`0`), not both. [S1] ## 🧩 추출된 패턴 (Extracted patterns) - **Implicit-opposite rule** — specifying `1` for one field implicitly sets all UNMENTIONED fields to `0`, and vice versa — this is why mixing explicit `0`s and `1`s (beyond `_id`) is contradictory and rejected. [S1] ## 📖 세부 내용 (Details) - Find one: `x = mycol.find_one(); print(x)`. [S1] - Find all: `for x in mycol.find(): print(x)`. [S1] - Include only specific fields: `for x in mycol.find({},{"_id": 0, "name": 1, "address": 1}): print(x)`. [S1] - Exclude one field: `for x in mycol.find({},{"address": 0}): print(x)`. [S1] - Invalid mix (raises error): `mycol.find({},{"name": 1, "address": 0})`. [S1] ## ⚖️ 모순 및 업데이트 (Contradictions & updates) 소스에서 모순되는 정보는 발견되지 않음. `_id` 필드만 예외적으로 0/1 혼용이 허용된다는 규칙이 명시됨. [S1] ## 🛠️ 적용 사례 (Applied in summary) 현재 발견된 실제 적용 사례가 없습니다 — SQL의 SELECT 컬럼 지정과 개념적으로 대응하지만, 문법은 0/1 규칙이라는 독특한 방식이다. [S1] ## 💻 코드 패턴 (Code patterns) Include only specific fields, excluding _id (Python): ```python for x in mycol.find({}, {"_id": 0, "name": 1, "address": 1}): print(x) ``` ## ✅ 검증 상태 및 신뢰도 - **상태:** draft - **검증 단계:** conceptual - **출처 신뢰도:** B (W3Schools — widely used educational reference, not a primary standards body) - **신뢰 점수:** 0.90 - **중복 검사 결과:** 신규 생성 (New discovery) ## 🔗 지식 그래프 (Knowledge Graph) - **상위/루트:** [[Python Tutorial]] - **관련 개념:** [[Python MongoDB Query]], [[Python MongoDB Insert]], [[Python MySQL Select]] - **참조 맥락:** SQL SELECT의 컬럼 지정에 대응 — 0/1 프로젝션 규칙이 핵심. ## 📚 출처 (Sources) - [S1] W3Schools — Python MongoDB Find — https://www.w3schools.com/python/python_mongodb_find.asp ## 📝 변경 이력 (Change history) - 2026-07-04: Initial draft synthesized from the W3Schools "Python MongoDB Find" page (Astra wiki-curation, P-Reinforce v3.1 format).