-1

MongoDB に組織と呼ばれるコレクションがあります。

organization:{ 
{
   "_id": "520",
   "org_name": "group1",
   "type": "default",
   "zip_codes": {
     "0": {
       "0": "012345",
       "1": "044034"
    }
  }
},


{
   "_id": "521",
   "org_name": "hvbdf",
   "type": "custome",
   "zip_codes": {
     "0": {
       "0": "012345"
    }
  }
}   

}

type=default および zip_codes=012345 の合計ドキュメントを取得したい

このクエリを試してみると、

$cursor = $collect->find(array('type' => 'default','zip_codes'=>array('012345')));

しかし、それは出力を与えないので、私はphpとmongodbを使用しています。

4

1 に答える 1

1

コメントで述べたように、zip_codesフィールドのスキーマに欠陥があります。あなたが持っているものを比較してください:

"zip_codes": {
    "0": {
        "0": "012345",
        "1": "044034"
    }
}

以下を使用します。

"zip_codes": [
    "012345",
    "044034"
]

後者の例でzip_codesは、文字列の配列です。元の例ではオブジェクトを使用しており、追加の冗長レベルのネストがありました。PHP とは異なり、MongoDB の BSON 形式には連想配列の概念がありません。配列 (0 から始まる数値インデックス) とオブジェクト (キーと値のペアのハッシュ マップまたは辞書) のみがあります。

配列を使用すると、配列を利用する多くのクエリおよび更新演算子と同様に、マルチキー インデックス(つまり、配列内のすべての値のインデックス)の利点が得られます。特に、db.collection.find() ドキュメントで説明されている構文を使用して、配列フィールドの値を簡単にクエリできます。スキーマを修正する場合、この最後のリンクは、クエリを作成するための十分なガイダンスを提供するはずです。

于 2013-08-20T19:49:01.973 に答える