0

MongoDBのキーとして「p396:branchCode」を含むすべてのドキュメントを見つける必要があります。値は関係ありません。何でもかまいません。

{"p396:branchCode": new RegExp(".*")}

MongoVUE でしたが、何も見つかりませんでした。私のデータベースは非常にネストされており、branchCode には "p396:checkTellersEApproveStatus" というスーパーキーがあります

4

3 に答える 3

2

キーはスーパーキーの下にネストされているため、ドット演算子を使用する必要があります。

{"p396:checkTellersEApproveStatus.p396:branchCode": {$exists: true}}

p396:branchCodeこれは、 が常に の下にあることを前提としていp396:checkTellersEApproveStatusます。そうでない場合、MongoDB では不明なキーに対するクエリを実行できないため、問題が発生します。可能なスーパーキーの数が少ない場合、$or-operator を使用してそれらすべてを照会できます。そうでない場合、唯一のオプションは、オブジェクトを配列にリファクタリングすることです。例を挙げると、次のような構造です。

properties: {
     prop1: "value1",
     prop2: "value2",
     prop3: "value3"
}

次のようにすると、任意のキーの下で値を照会するのがはるかに簡単になります。

properties: [
     { key: "prop1", value:"value1"} ,
     { key: "prop2", value:"value2"},
     { key: "prop3", value:"value3"}
]

あなたはただできるからdb.collection.find({"properties.value":"value2"})

于 2015-07-15T14:50:54.423 に答える
0

$exists演算子を使用したいようです。

{'p396:branchCode': {$exists: true}}

これは、このクエリがパスの一部であることを前提としています。

{ 'p396:checkTellersApproveStatus': {'p396:branchCode': {$exists: true}}}

これは次のように短縮できます。

{ 'p396:checkTellersApproveStatus.p396:branchCode': {$exists: true}}
于 2015-07-15T14:41:04.560 に答える