私は1人以上のサービスに加入しているユーザーの集まりを持っています。各サービスには、ユーザーがそのサービスに対して持っているクレジット数を含むいくつかのメタデータがあります。Mongodbドット表記ワイルドカード?
サービスオブジェクトのキーが何であるかを知る方法がないと、サービスのクレジットが50未満のすべてのユーザーオブジェクトを見つけるにはどうすればよいですか?
概念的に、それは動作しません。このような何か、次のようになります場合には、それはないですが、
{
_id: 4f0ea25072139e4d2000001f,
services : {
a : { credits : 100, score : 2000 },
b : { credits : 200, score : 300 },
c : { credits : 10, score : 1300 }
}
},
{
_id: 4f0ea25072139e4d2000001f,
services : {
f : { credits : 68, score : 14 },
q : { credits : 1000, score : 102 },
z : { credits : 59, score : 352 }
}
}
私がやりたいことのもう一つの例:
db.users.find({services.*.credits : {$lt : 50}})
ユーザーコレクションここで説明されています:http://www.mongodb.org/display/DOCS/Advanced+Queries#comment-346075854
私はちょうど配列を使用するために私たちのスキーマを変更してしまうんでした:
は、クエリが$を使用してください。私は$ elemMatchを使用することができましたが、1つの条件を満たすだけで済むので、できました: 'db.users.find({services.credits:{$ lt:50}})' – stuporglue-1これは質問に対する答えではありません。誰もが、彼らが作業しているデータのスキーマを変更する能力を持っているわけではありません。この質問には未回答のままです。 – CommaToast
OK私は自分でそれに答えました。それを行う方法が見つかりました。以下に掲示される。 – CommaToast