2017-09-26 9 views
-1

私は3つのフィールド 'TO'、 'FROM'と 'MESSAGE'を持っています。私はちょうど私がいくつかの節を与えたメッセージフィールドの内容を表示したいと思います。 文献{{_ ID = 59c7d57c674cd5673c304936、9915103230 =まで、より= 9915103229、日付=/2017分の12 24、メッセージ=こんにちは}}mongoDBから1つの値だけを抽出する方法は?

私は "HELLO WORLD" を取得する

、全体ではなく文書。

同じように、String message = ????? --->ここでは、String型の変数が値Hello Worldを取得するように、いくつかのメソッドが必要です。

私にとっては投影法が機能しません。

私はJDBC MongoDB 3.5ドライバを使用しています。

+1

ご質問がある場合はお手伝いできません混乱、入出力はなく、努力の兆候はありません –

+0

[mongoose .find()]のreturn document \ _idの複製が可能です(https://stackoverflow.com/questions/46284659/only-return-document-id -on-mongoose-find)である。 [Projection](https://docs.mongodb.com/manual/reference/method/db.collection.find/#find-projection)を使用します。私は私の答えでそれを使用する方法について少し説明します。 – zero298

+0

@ zero298私はあなたの実装を行いましたが、動作しませんでした。あるいはmongoDBを初めて使用しているため誤って実装されていたかもしれません。 "await"でエラーが発生しました。ありがとう。 – Ratik

答えて

0

ここ機能PROGだ3.5ドライバに対してコンパイル

 MongoClient mongoClient = new MongoClient(); 
     MongoDatabase db = mongoClient.getDatabase("testX"); 
     MongoCollection<BsonDocument> coll = db.getCollection("foo", BsonDocument.class); 
     coll.drop(); 

     { 
      BsonDocument doc = new BsonDocument(); 
      doc.put("from", new BsonInt32(23343223)); 
      doc.put("to", new BsonInt32(23343223)); 
      doc.put("msg", new BsonString("hello")); 
      coll.insertOne(doc); 

      doc.remove("_id"); 
      doc.put("from", new BsonInt32(8889)); 
      doc.put("to", new BsonInt32(99999)); 
      doc.put("msg", new BsonString("goodbye")); 
      coll.insertOne(doc); 
     } 

     { 
      BsonDocument query = new BsonDocument("from", new BsonInt32(8889)); 
      BsonDocument proj = new BsonDocument("msg", new BsonInt32(1)); 
      proj.put("_id",new BsonInt32(0)); 

      BsonDocument d2 = coll.find(query).projection(proj).first(); 
      System.out.println(d2); 

      String s2 = coll.find(query).projection(proj).first().getString("msg").getValue(); 
      System.out.println(s2); 
     } 
1

find()の2番目のオプションの引数projectionを使用します。コンテキストの場合、これはドキュメント全体を提供します:

db.yourCollection.find({〜:9915103230、from:9915103229});

これにより、結果からのメッセージのみが表示されます。ただ、フィールドに名前を付け、1に設定します。

db.yourCollection.find({へ:9915103230、から:9915103229}、{メッセージ:1};

あなたが返すように複数のものを指定することができます。

db.yourCollection.find({に:9915103230、から:9915103229}、{メッセージ:1:1;}

+0

また、 '_id:0'を渡すことによって' _id'フィールドを抑制することができます –

+0

もう一度私の質問を参照してください。私はあなたのことを試みたが、うまくいかなかった。ありがとう。 – Ratik

+0

@Ratikここで私の2番目の投稿を見てください。 –

関連する問題