$プロジェクトの余分なフィールドに私を許可しませんが、私は単純に$プロジェクトの一部は、通常のフィールドのために動作しない理由を把握することはできません」請求書」テーブル:
{
"_id" : "AS6D0",
"invoiceNumber" : 23,
"bookingId" : "AS6D0",
"createDate" : 1490369414,
"dueDate" : 1490369414,
"invoiceLines" : [
{
"lineText" : "Rent Price",
"amountPcs" : "8 x 7500",
"amountTotal" : 60000
},
{
"lineText" : "Discount(TIKO10)",
"amountPcs" : "10%",
"amountTotal" : -10000
},
{
"lineText" : "Final cleaning",
"amountPcs" : "1 x 5000",
"amountTotal" : 5000
},
{
"lineText" : "Reservation fee paid already",
"amountPcs" : "1 x -20000",
"amountTotal" : -20000
}
],
"managerId" : "4M4KE"
}
そして、これが私のクエリ
db.getCollection('invoice').aggregate([
{
$match: {
bookingId: "AS6D0"
}
},
{
$unwind: "$invoiceLines"
},
{
$group: {
_id: "$_id",
sum: {$sum: "$invoiceLines.amountTotal"}
}
},
{
$project:{
"_id" : 0,
"invoiceNumber" : 1,
"dueDate" : 1,
"sum" : 1
}
}
])
である私は_idとの和を得るが、それは文句を言わないinvoiceNumberとdueDate
を表示
もちろん、グループ化すると、そのグループに属していないフィールドにはアクセスできません。あなたは彼らに何が返されると思いますか?それはグループ化です。 –
@MateoBarahonaあなたは正しいですが、この場合、レコード内に配列をグループ化しています。 dueDateとinvoiceNumberはその配列の一部ではありません。私はレコードのセットをグループ化するかどうかを理解していますが、この場合はレコードをグループ化しています。何か案は? – torbenrudgaard
私が言ったように、私はあなたが集約するときに$ group句で定義されていないものを得ることは期待できないと思います。 –