2012-02-28 3 views
1

그래서, 나는 SQL 세계에서이기 때문에 어쩌면 내가 뭔가를 잘못 이해했습니다MongoDB를 동적 값

_id: "0234weasq43rq", 
title: "Panasonic", 
descr: "blah blah", 
price: 132, 
specifications { 
    weight: 135, 
    color: "black", 
    type: "LCD", 
    diagonal: 50 
} 

_id: "0234weasq43rq", 
title: "Samsung Galaxy Tab", 
descr: "blah blah", 
price: 132, 
specifications { 
    weight: 135, 
    color: "white", 
    standard: "GSM", 
    wifi: "Yes" 
} 

내가 (제품의 서로 다른 범주에 대해 서로 다른 사양을 가질 수 있습니다 : 나는 제품의 컬렉션이 있습니다 전화 및 컴퓨터)? goods.find(specifications { diagonal: 50 })과 같은 검색어를 사용하여 상품을 찾는 데 문제가 있습니까? 모든 상품에 '대각선'사양이없는 경우?

감사합니다.

답변

2

예, 동일한 컬렉션에서도 문서가 완전히 다른 구조를 가질 수 있습니다. 귀하의 예제에서 쿼리는 대각선 = 50 인 상품 만 반환하고 대각선이 정의되지 않은 문서는 생략합니다 (또는 정의되어 있지만 분명히 50은 아니지만 분명히).

+0

좋아, 한 번 더 질문 :이 쿼리 예제 (예 : specifications {diagonal : {$ gt : 3}})에 대해보다 큼/작음 연산자를 사용할 수 있습니까? –

+1

예, 가능합니다. 당신은 실제로 mongo 쉘에서이 모든 것을 테스트 할 수 있습니다. 그것은 사용하기 매우 쉽습니다. – Eduardo

1

제품 카테고리에 따라 서로 다른 사양을 유지하십시오 (예 : 전화 및 컴퓨터)?

동일한 컬렉션에는 다른 구조의 문서가있을 수 있습니다. 그래서 당신은 제품의 다른 카테고리에 대해 서로 다른 사양을 유지할 수 있습니다.

goods.find 같은 쿼리를 사용하여 제품을 찾는 어떤 문제가 있습니까 (사양 {대각선 : 50}), 상품의 모든없는 경우 는 "대각선"사양이?

아니요, 물론입니다. 유용 할 수있는 한 가지는 모든 문서 (예 : 대각선 필드)에 표시되지 않는 필드에 대한 색인입니다 (sparse). 이 색인에는이 입력란이없는 문서는 포함되지 않습니다.