0

mongodb ドキュメントを他のドキュメントの参照にしました。しかし、私はそれが私が望むように機能していないと思います!

例えば:

> 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" } }

最後の挿入を最初のレフリーにしているので、次と同等である必要があります。

{
   _id: "b", 
    b: {

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

       } 
}

それでも、なぜこのクエリは失敗するのでしょうか?

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

$idのプロパティを間違って理解した可能性があります。しかし、参照によってそれができない場合、他にどのような選択肢がありますか? 参照する利点は何ですか?

4

1 に答える 1

0

まず、ドキュメントをドキュメント内に埋め込むことは、ドキュメントを参照することとは異なります。あなたの場合、埋め込みではなくドキュメントを参照しています。したがって、埋め込みドキュメントのように扱うことは想定されていません。あなたがしているのは、埋め込まれていないドキュメントがあるかのようにクエリを実行することです。

Mongodb のドキュメントは、参照の使用方法について非常に明確であり、参照については mongodb のドキュメントにアクセスする必要があると思います。しかし要するに、結果を取得しdb.ttt.find({ "_id" : "b"})たら、アプリケーションは別のクエリを作成して、最初のクエリで取得した参照を使用して参照ドキュメントを見つける必要があります。

覚えておくべき重要なことは、埋め込みドキュメントの場合、1 つのクエリを実行して埋め込みドキュメントから結果を取得できるのに対し、参照ドキュメントでは 2 番目のクエリを利用する必要があることです。

于 2013-03-10T10:48:26.673 に答える