web-dev-qa-db-ja.com

MongoDBデータベース、SELECT column1、column2 FROMtblと同等

私のMongoDBから私は同等のものが欲しい

  SELECT column1, column2
  FROM tbl

このコードを使用すると、すべての「行」だけでなくすべての「列」も取得されます

  DBCollection collection = database.getCollection("names");
  DBCursor cursor = collection.find();

たとえば、all '行'が必要ですが、のみ '列':id、name、age

どうすればよいですか?

助けてくれてありがとう!

19
Marc Stevens

db.collection.find({}、{_ id:1、名前:1、年齢:1})

見つけるための最初の引数(述語)は、選択基準です。

db.collection.find({年齢:{$ gte:21}})

2つ目は、取得するフィールドを制限するため、21歳以上の全員の名前の場合:

db.collection.find({年齢:{$ gte:21}}、{名前:1})

特にオフにしない限り、フィールドセレクタは常に_idをプルバックします。

db.collection.find({}、{_ id:0})

ただし、Mongoはデフォルトではフィールドの存在をチェックしません。特定のフィールドを選択し、それらのフィールドを持つ結果のみを照合する場合は、次を使用します。

db.collection.find({age:{$ exists:true}})

MongoDB Webサイトには、.find()関数の詳細な説明があります。

38
cjohn

ありがとう!、以下のコードで修正しました。

    BasicDBObject select = new BasicDBObject();
    select.put("id", 1);
    select.put("name", 1);
    select.put("age", 1);
    collection.find(new BasicDBObject(), select);

上記のコードは、上記の列名のみを含むすべてのレコードを提供します。

1
Marc Stevens

SQLクエリのように1つまたは複数の列を選択する場合。たとえば、SQLクエリが次のようになっている場合

select name, content from knowledgebase where applicationId='2955f3e174dce55190a87ed0e133adwdeb92';

MongoDBクエリ:

db.knowledgebase.find({ "applicationId": "2955f3e174dce55190a87ed0e133adwdeb92"}, { "name": 1,    "content": 1});
0
Vipin Pandey