私はMongoDBデータベースを照会するためのpythonスクリプトを書いています。私は、連想配列に格納されているデータの照会、フィルタリング、および解析を支援する必要があります。MongoDB連想配列の照会
要件:
クエリホスト名、最後に見た日、ステータス、およびIPv4アドレス(他のフィールドは必要ありません)
をインポートすることができ、「フラット」JSON形式にデータを解析ここでは、リレーショナルデータベースに
は、私たちが照会されているデータのデータ構造です:
ここで[{"hostnames": [{"type": "ABC", "name": "example.hostname.com"}], "vendor": {"vendor_name": "apple"}, "last_seen": {"$date": 1461123503979}, "status": {"state": "up", "reason": "echo-reply"}, "addresses": {"ipv4": "192.168.1.1"}}]
は、私はそれがフラットなリレーショナルデータベースにインポートすることができるようにしたいシンプルなデータ構造である:ここで
[{"name": "example.hostname.com", "vendor": "apple", "$date": 1461934503972, "state": "up", "ipv4": "192.168.1.1"}]
は、私が始めているコードです。私は集計を使用してフィールドのエイリアスを作成しています。
データを必要な形式で取得するために、連想配列をまだトラバースする必要があります。
client = MongoClient(mongo_uri)
db = client[mongo_db]
computers = db['computer'].aggregate([
#Aggregate - RDBMS equivalent to Alias select x as y
#Rename fields to match destination names
{"$project": {
"_id":0,
"u_id":"$id",
"u_status": "$status",
"u_vendor":"$vendor",
"u_addresses": "$addresses",
"u_hostnames": "$hostnames",
"u_last_seen": "$last_seen"
}}
])
"hostnames"は1つの要素リストですか? – styvane
これは、コレクション内の単一のドキュメントの例です。 – pengz
ありがとうございました。もう1つの質問は、 "u_last_seen"日付が返されていないことです。 "date": "$ last_seen.date" 日付フィールドがエンコードされています。次に、データベースの日付フィールドの例を示します。 "last_seen":ISODate( "2016-04-29T14:06:17.441Z") この値を返すには他に何が必要ですか?どうもありがとう。 – pengz