2017-09-25 21 views
0

申し訳ありませんが、簡単な質問があります。 MongoDBには、「罰則」と呼ばれるサブ文書を保持する簡単な文書があります。 私は、文書(ここでは_id "Cammeritz")を副文書のString( "penalties")で見つけたいと思っています。 "penaltyid = 0f77d885-6597-3f47-afb1-0cee2ea3ece1"。多分私を助けてくれますか?ベストはJavaの説明ですが、通常のMongoDBクエリーで助けても大丈夫です。MongoDBでサブ文書を検索するクエリ

{ 
    "_id" : "Cammeritz", 
    "penalties" : [ 
     { 
      "_id" : null, 
      "date" : ISODate("2017-09-25T20:01:23.582Z"), 
      "penaltyid" : "0f77d885-6597-3f47-afb1-0cee2ea3ece1", 
      "reason" : "Hacking", 
      "teammember" : "Luis", 
      "type" : "ban" 
     }, 
     { 
      "_id" : null, 
      "date" : ISODate("2017-09-25T20:01:23.594Z"), 
      "penaltyid" : "7f5411b0-e66a-33b3-ac4f-4f3159aa88a9", 
      "reason" : "Spam", 
      "teammember" : "BluingFX", 
      "type" : "kick" 
     } 
    ], 
    "isBanned" : true, 
    "isMuted" : false 
} 
+0

[MongoDB:配列マッチングパラメータでのサブ文書の検索](https://stackoverflow.com/questions/11823296/mongodb-find-subdocument-in-array-matching-parameters) –

答えて

2

おっと、私はあなたの質問を誤解しました。ドット表記を使用する必要があります。 db.collection.find({ penalties.penaltyid: '0f77d885-6597-3f47-afb1-0cee2ea3ece1' })詳細はQuery on a Nested Fieldを参照してください。


オリジナルの答え:

db.collection.find({ penalties: "0f77d885-6597-3f47-afb1-0cee2ea3ece1" })が動作するはずです。詳細については、mongodbドキュメントのQuery an Array for an Elementを参照してください。私はJavaにあまり慣れていないので、あまり助けてはいけません。

+0

基本的に私のMongoDB GUI(Robo )私に「エラー:行1:予期しないトークン」というエラーが表示されます。 –

+0

編集:私はそれが私のクライアントに問題だったと思う、それは完璧に動作するので、答えが必要な人のためにここにある:ドキュメントd = getCollection()。find(eq( "penalties.penaltyid"、s) )。最初(); –

関連する問題