我正在尝试查询一个巨大的mongo集合,该集合具有约50亿以上的记录。在mongo查询中,我只需要几个字段。文档中存在的对象ID和MD5。为此,我做了
查询:
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
。
mongo命令是否支持两个键的匹配值?
有什么建议吗?
答案 0 :(得分:3)
您可以使用$expr
来允许在查询语言中使用聚合表达式。
db.collection.find({ "$expr": { "$eq": [ "$_id" , "$md5" ] } })
或聚合
db.collection.aggregate([
{ "$match": { "$expr": { "$eq": [ "$_id" , "$md5" ] } } }
])