比较同一文档的两个字段 [英] compare two fields of same document

查看:54
本文介绍了比较同一文档的两个字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试查询一个巨大的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆