比较同一文档的两个字段 [英] compare two fields of same document
本文介绍了比较同一文档的两个字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试查询一个巨大的mongo集合,其中包含约50亿条记录.在mongo查询中,我只需要几个字段.文档中存在的对象ID和MD5.为此,我做了
I'm trying to query a huge mongo collection which have around 50 + Million records. In the mongo query , I only need few fields. Object ID and MD5 which is present in the document. For that , I did
查询:
db.getCollection('experimental_engine').find({},{"md5":1,"_id":1})
结果:
/* 1 */
{
"_id" : "5cee41f2ca4e0ebf567ffd1be5cdaf1f",
"md5" : "1d813cb29082b13efe572e8088f006dd"
}
/* 2 */
{
"_id" : "fcd79aac0d5c5ebdfd0fa389368ab6f3",
"md5" : "13a1a6cd5c8f1c5eaf3d409f4d809889"
}
/* 3 */
{
"_id" : "2a0b42d01892bd9b7368d045a4c7862c",
"md5" : "2a0b42d01892bd9b7368d045a4c7862c"
}
................
现在,我想同时匹配"_id"和"md5"并仅获取匹配的值(_id = md5
).
Now , i wanted to match both "_id" and "md5" and get only matching values ( _id = md5
) .
mongo命令是否支持两个键的匹配值?
Do mongo command support match values for two keys ?
有什么建议吗?
推荐答案
You can use $expr
which allows the use of aggregation expressions within the query language.
db.collection.find({ "$expr": { "$eq": [ "$_id" , "$md5" ] } })
或聚合
db.collection.aggregate([
{ "$match": { "$expr": { "$eq": [ "$_id" , "$md5" ] } } }
])
这篇关于比较同一文档的两个字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文