1
我有類似下面的文檔:如何兩場管道聚合(MongoDB的)文檔中比較
{
"user_id": NumberLong(1),
"updated_at": ISODate("2016-11-17T09:35:56.200Z"),
"created_at": ISODate("2016-11-17T09:35:07.981Z"),
"banners": {
"normal_x970h90": "/images/banners/4/582d79cb3aef567d64621be9/photo-1440700265116-fe3f91810d72.jpg",
"normal_x468h60": "/images/banners/4/582d79cb3aef567d64621be9/photo-1433354359170-23a4ae7338c6.jpg",
"normal_x120h600": "/images/banners/4/582d79cb3aef567d64621be9/photo-1452570053594-1b985d6ea890.jpg"
},
"name": "jghjghjghj",
"budget": "2000",
"plan": null,
"daily_budget": "232323",
"daily_budget_auto": "",
"href": "qls2.ir",
"targets": {
"cats": [
"fun",
"news"
],
"region": "inIran",
"iran_states": null,
"os": "all",
"gold_network": true,
"dont_show_between_1_n_8": true
},
"payment": {
"bank": "mellat",
"tax": "add"
},
"click_cost": "102000",
"status": null
}
我要檢查,如果budget
低於click_cost
,而我在檢查其它一些參數我的查詢:
db.bcamp.aggregate(
[
{
$match:{
$and: [
{"targets.cats":{
"$in" : ["all"]
}
},
{"banners.normal_x970h90":{
"$exists":true
}
},
{"href": {
$nin: ["qls.ir"]
}
}
]
}
}
]).pretty();
我已經嘗試了比較方法,如:
db.bcamp.aggregate(
[
{$project: {ab: {$cmp: ['$budget','$clickcost']}}},
{$match: {ab:{$gt:1}}}
]).pretty();
但是我得到了錯誤的結果,它總是返回4個文件,他們的預算可能會或可能不會比click_cost更嚴重,這意味着它會提取錯誤的數據。
如何將該比較添加到我的mongoDB管道中?
: 「click_cost」:150 –
你是如何更新這些值?這些數字默認存儲爲float。您必須將它們更新爲NumberLong(「somevalue」)纔是長期價值。像這樣的db.collection.update({user_id:1},{$ set:{click_cost:NumberLong(「102000」)}})。 NumberInt爲32位值。 – Veeram
好吧我已經將它們改成了NumberLong(...),然後我運行了你的代碼,但是結果中有4個對象 - 我的對象預算低於click_cost,其中一些沒有預算或click_cost值 - 這是怎麼回事發生?沒有與預算相同的對象click_cost –