私はmongooseを使用しています。私はこの1つのコレクションのデータをサブドキュメントとして取得する別のドキュメントの中にmongoDb
{
"_id" : ObjectId("597568f5cf12434674"),
"data": "test data",
"createBy" : "testing",
"modifyBy" : "testing",
"modifyDate" : ISODate("2017-07-24T03:26:45.350Z"),
"createDate" : ISODate("2017-07-24T03:26:45.350Z"),
}
ようmeta
コレクションを持って、この_id
は私が注文の詳細を得るとき、私は私の最終的な結果は次のようになりように、2つのコレクションに参加する必要がありorders
{
"_id" : ObjectId("597818bf5332f91213411"),
"type" : "food order",
"isActive" : true,
"files" : [
{
"metaId" : "597568f5cf12434674",
"_id" : ObjectId("597818sdfasdaf2222")
}
]
}
metaId
と呼ばれる別のコレクションでありますこのように
{
"_id" : ObjectId("597818bf5332f91213411"),
"type" : "food order",
"isActive" : true,
"files" : [
{
"metaId" : "597568f5cf12434674",
"data": "test data",
"createBy" : "testing",
"modifyBy" : "testing",
"modifyDate" : ISODate("2017-07-24T03:26:45.350Z"),
"createDate" : ISODate("2017-07-24T03:26:45.350Z"),
"_id" : ObjectId("597818sdfasdaf2222")
}
]
}
私はこのクエリを書いていますが、空を返します。これはinc私はメタデータをオーダーの中に入れたいからです。
const query = db.orders.aggregate([
{'$match': {'_id': _id}},
{'$lookup': {
'localField': 'files.metaId',
'from': 'meta',
'foreignField': '_id',
'as': 'metaInfo'
}},
{'$unwind': '$metaInfo'},
{'$project': {
'type': 1,
'isActive': 1,
'metaInfo.data': 1
}}
]);
私はこのmongoをやってもらえますか、私はmongodbにはとても新しいです。事前に感謝してください、助けてください。あなたが最初にそれをほどくする必要がありますので
これはうまくいきます:)どうもありがとうございました 。私たちはmetaIdの値を削除するのではなく、古い_idのフィールドを保持する必要があります –
私はこのポイントに対処するための答えを更新しました: '' metaId '"の値をそれを取り除く。しかし、私はこの要求にはっきりしていません。「古いフィールドを保持する必要があります。 – glytching