2013-03-10 4 views
0

나는 mongodb 문서를 다른 문서의 참조로 만들었습니다. 하지만 내가 원하는대로 작동하지 않는다고 생각합니다! 예를 들어

:이 쿼리가 실패 아직 왜

{ 
    _id: "b", 
    b: { 

     {_id: "a", b:"b" } 

     } 
} 

:

> db.ttt.insert({_id: "a", b:"b" }) 
> db.ttt.insert({_id: "b", b: {$id:"a" } }) 
> db.ttt.find() 
{ "_id" : "a", "b" : "b" } 
{ "_id" : "b", "b" : { "$id" : "a" } } 

나는 내 마지막 삽입 심판을하고 있기 때문에 먼저가에 동일해야하기 때문에?

> db.ttt.find({"b.b":"b"}) 

나는 $id의 속성을 잘못 이해했을 수 있습니다. 그러나 참조 할 수 없다면 다른 선택은 무엇입니까? 참조하는 것의 이점은 무엇입니까?

답변

0

먼저, 문서 내에 문서를 포함시키는 것은 문서를 참조하는 것과 다릅니다. 귀하의 경우에는 임베디드가 아닌 문서를 참조하고 있습니다. 그래서 당신은 임베디드 문서처럼 다루지 않을 것입니다. 당신이하고있는 일은 당신이하지 않은 문서를 삽입 한 것처럼 그것을 쿼리하는 것입니다.

Mongodb 설명서는 참조하는 방법에 대해 매우 분명하며 the mongodb documentation for referencing을 방문해야한다고 생각합니다. 간단히 말해서 db.ttt.find({ "_id" : "b"})에서 결과를 얻으면 응용 프로그램은 첫 번째 쿼리에서 얻은 참조와 참조 된 문서를 찾기 위해 다른 쿼리를 만들어야합니다.

기억해야 할 중요한 점은 포함 된 문서의 경우 하나의 쿼리를 실행하여 포함 된 문서의 결과를 얻을 수 있지만 참조 된 문서에서는 두 번째 쿼리의 도움을 받아야한다는 점입니다.

관련 문제