2014-10-27 43 views

回答

3
db.c.aggregate([{ 
    $project : { 
     equal : { 
      $eq : ["$field1", "$field2"] // to judge like your : "valueof(field1) == valueof(field2)" 
     }, 
     doc : "$$ROOT" // store the whole document, this is optional 
    } 
}, { 
    $match : { 
     equal : true // filter to get documents only satisfy : "valueof(field1) == valueof(field2)" 
    } 
}]); 
+1

@i驚慌的外星人,也許我認爲這就夠了。感謝提醒。 – Wizard 2014-10-27 15:17:23

+0

謝謝!它的工作..但'doc:'$$ ROOT''是什麼意思? – 2014-10-28 17:51:45

+0

@Efstathios Chatzikyriakidis:它代表了前一階段的當前文件。例如,如果您的集合中有一個文檔{_id:1,a:1,b:2},則doc:「$$ ROOT」將生成一個字段{doc:{_id:1,a:1, b:2}}。這是可選的,因爲我在代碼塊中評論,我做了它,因爲我不知道最後要投影哪些字段,所以我投影整個文檔。 – Wizard 2014-10-29 00:44:32

-1

你需要做這樣的事情:

db.collection.aggregate([{$match:{field1:value1 , field2:value1}}]) 
+0

我能知道這是爲什麼downvoted? – vmr 2014-10-27 13:30:23

+0

我想要做一些像「valueof(field1)== valueof(field2)」的東西。 – 2014-10-27 13:52:37

+0

這兩個字段具有相同的數據類型? – vmr 2014-10-27 14:22:39

相關問題