0

ツイートをMongoDBデータベースに保存しており、フィールドセレクター(http://www.mongodb.org/display/DOCS/Querying#Querying-FieldSelection)を使用して、ユーザー。

{ 
    "_id" : NumberLong("213686009408"), 
    "text" : "RT @Milanello: Lightning over the Donb...", 
    "created_at" : "Fri, 15 Jun 2012 17:37:38 +0000", 
    "user" : { 
        "screen_name" : "xxxxx", 
        "profile_image_url" : "http://a0.twimg.com/pro[...].jpg"
    }
}

テキストと日付だけを返すクエリを作成するのは簡単です。

> db.abc.find({},{created_at:1,text:1})

user.screen_nameプロパティも返す方法がわかりませんか?

[アップデート]

以前にドット表記を使用しようとしましたが、例外が発生しましたが、以下の両方の回答(両方を+1しました)に従って、ドット表記は機能しますが、属性名の前後に「」を使用した場合に限ります。

したがって、これは機能しません。

db.abc.find({},{created_at:1,text:1, user.screen_name:1})

しかし、これは行います:

db.abc.find({},{created_at:1,text:1, "user.screen_name":1})
4

2 に答える 2

2

You need to use dot notation to query for values within the array. I created a similar document, modified the _id field, and ran the following queries successfully -

> db.abc.find({},{'user.screen_name': 1})
{ "_id" : 1200, "user" : { "screen_name" : "xxxxx" } }

> db.abc.find({'user.screen_name': "xxxxx"})
{ "_id" : 1200, "text" : "RT @Milanello: Lightning over the Donb...", "created_at" : "Fri, 15 Jun 2012 17:37:38 +0000", "user" : { "screen_name" : "xxxxx", "profile_image_url" : "http://a0.twimg.com/pro[...].jpg" } }

There's more infomation on advanced queries here.

Update: Looks like I posted this 2 minutes after mnemosyn so accept his answer first.

于 2012-06-18T10:02:29.293 に答える
2

クエリと同じようにドット表記を使用できます。

db.abc.find({},{created_at:1,text:1, "user.screen_name" : 1})

ただし、フィールドはフラット化されないため、結果オブジェクトにはまだuser-subdocumentがあります。

{ "_id" : NumberLong("4546545"), 
  "created_at" : "Fri, 15 Jun...", 
  "user" : { "screen_name" : "John Doe" } 
}

ただし、これをコードで平坦化することは大きな問題にはなりません。

于 2012-06-18T09:57:20.220 に答える