2017-08-24 26 views
1

考慮發票收集與下列文件:MongoDB中的文檔的2場之間的比較

{ "invoice_no" : "1001", "payable_amount" : 100, "paid_amount" : 50 } 
{ "invoice_no" : "1002", "payable_amount" : 200, "paid_amount" : 200 } 
{ "invoice_no" : "1003", "payable_amount" : 300, "paid_amount" : 150 } 
{ "invoice_no" : "1004", "payable_amount" : 400, "paid_amount" : 400 } 

需要這些文件,其中payable_amount> paid_amount

預期結果:

{ "invoice_no" : "1001", "payable_amount" : 100, "paid_amount" : 50 } 
{ "invoice_no" : "1003", "payable_amount" : 300, "paid_amount" : 150 } 
+0

可以請你看看這個,https://stackoverflow.com/questions/8433046/mongodb-query -with-the-the-the-documents –

回答

1

你會發現很多使用$where operator的例子,但是聚合框架可以爲你做這個...

db.collection.aggregate([ 
    { 
     "$addFields": { 
      "isPayableAmountGreater": { "$cmp": [ "$payable_amount", "$paid_amount" ] } 
     } 
    }, 
    { "$match": { "isPayableAmountGreater": 1 } } 
]) 

或者更簡單,在不創建(可能是不需要的)isPayableAmountGreater準屬性:

db.collection.aggregate([ 
    { 
     "$redact": { 
      "$cond": [ 
       { "$gt": [ "$payable_amount", "$paid_amount" ] }, 
       "$$KEEP", 
       "$$PRUNE" 
      ] 
     } 
    } 
]) 
+0

它工作在@ glitch。 – saif