月曜日, 7月 22, 2019

PyMongo で内部結合

PyMongo を使った内部結合の実装です。classics テーブル、baroque テーブルの内部結合を キー composer_id で照らし合わせたものです。

外部結合なら $match の部分なしで結果がとれます。

_id で照らし合わせる場合、ObjectId(id) で合わせるか文字列へ変換するか気を付ける必要があります。

{"_id":"5d355b602f3e9e3268f12a20","composer_id":"5d2b80272f3e9e25e0eadccf"}
view raw baroque hosted with ❤ by GitHub
from flask_pymongo import PyMongo
classics = list(mongo.db.classics.aggregate(
[
{ "$lookup" :
{
"from":"baroque",
"localField":"composer_id",
"foreignField":"composer_id",
"as":"baroqueid"
}
}
,
{ "$match" :
{
"baroqueid": {"$ne": []}
}
}
]
))
view raw baroque.py hosted with ❤ by GitHub
{
"_id":"5d2fdb532f3e9e25b046aed1",
"title":"01 Track 1.wma",
"path":"\\Music\\BACH.Johann.Sebastian\\Bach Brandenburg Concertos Nos. 1-4, 6\\01 Track 1.wma",
"composer":"BACH.Johann.Sebastian",
"work":"Bach Brandenburg Concertos Nos. 1-4, 6","composer_id":"5d2b80272f3e9e25e0eadccf"
}
view raw classics hosted with ❤ by GitHub

Qt: 外部プログラムを起動する

  Qt/C++ のアプリは、外部へ直接アクセスできます。これはネットアプリでは不可能な Qt のメリットです。 外部プログラムを起動することもできます。QProcess::startDetached() を使うと独立したプロセスを立ち上げることができます。 この QProces...