Aru*_*run 3 mongodb mongodb-query aggregation-framework
我正在尝试查询一个巨大的 mongo 集合,其中包含大约 50 + 百万条记录。在 mongo 查询中,我只需要几个字段。文档中存在的对象 ID 和 MD5。为此,我做到了
询问 :
db.getCollection('experimental_engine').find({},{"md5":1,"_id":1})
Run Code Online (Sandbox Code Playgroud)
结果 :
/* 1 */
{
"_id" : "5cee41f2ca4e0ebf567ffd1be5cdaf1f",
"md5" : "1d813cb29082b13efe572e8088f006dd"
}
/* 2 */
{
"_id" : "fcd79aac0d5c5ebdfd0fa389368ab6f3",
"md5" : "13a1a6cd5c8f1c5eaf3d409f4d809889"
}
/* 3 */
{
"_id" : "2a0b42d01892bd9b7368d045a4c7862c",
"md5" : "2a0b42d01892bd9b7368d045a4c7862c"
}
................
Run Code Online (Sandbox Code Playgroud)
现在,我想同时匹配 "_id" 和 "md5" 并且只得到匹配的值 ( _id = md5) 。
mongo 命令是否支持两个键的匹配值?
请问有什么建议吗?
您可以使用$expr which 允许在查询语言中使用聚合表达式。
db.collection.find({ "$expr": { "$eq": [ "$_id" , "$md5" ] } })
Run Code Online (Sandbox Code Playgroud)
或聚合
db.collection.aggregate([
{ "$match": { "$expr": { "$eq": [ "$_id" , "$md5" ] } } }
])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7275 次 |
| 最近记录: |