我试图查询一个庞大的芒果收藏,其中大约有5000万张记录。在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命令支持是否匹配两个键的值?
有什么建议吗?
发布于 2018-07-17 16:52:39
您可以使用$expr,它允许在查询语言中使用聚合表达式。
db.collection.find({ "$expr": { "$eq": [ "$_id" , "$md5" ] } })或聚集
db.collection.aggregate([
{ "$match": { "$expr": { "$eq": [ "$_id" , "$md5" ] } } }
])https://stackoverflow.com/questions/51386582
复制相似问题