如果我想要文档,那么返回集合中所有文档的最佳方式是什么.a==文件.B

我试过了

db.collection.aggregate([ { $match: { $eq: [ '$a', '$b' ] } }])

但是它没有返回任何错误或结果,因为我假设它是字面上匹配字符串"$a"和"$b".有没有不同的方式来指定这些是字段?

db.collection.aggregate([    { $project: { 
    eq: { $cond: [ { $eq: [ '$a', '$b' ] }, 1, 0 ] } 
} },
{ $match: { eq: 1 } }])

上面的方法可以使用,但是需要额外的步骤再次查询找到的任何文档或投影所有可能的字段.

有没有更好的方法来实现这个查询?

推荐答案

基本上,您正在try 执行自联接.MongoDB不支持的操作.

关于$eq运算符,正如您所猜到的:

除了按照你的建议多用$project步之外,我不知道还有什么其他方法来完成你所需要的.

请注意,这并不是要贵significantly%,因为无论如何,您的查询不能使用任何索引,MongoDB将执行完全扫描.

Database相关问答推荐

KUST查询指定时间跨度内里程表&值的差值,并将其滚动到0

powerapps 中的 ClearCollect 未按预期收集数据

prisma 中的隐式或显式多对多关系

如何在 C# 控制台应用程序中执行 CMD 命令?

Entity Framework:如何检测对数据库的外部更改

将 `tsv` 文件插入 postgresql 数据库

被删除的行占用的空间会被重新使用吗?

返回 DataSet/DataTable 的 PowerShell 函数中的奇怪行为

在数据库中存储枚举值的最佳方式 - String 或 Int

设置默认数据库连接 Rails

使用脚本语言动态数据库

A QuerySet 按聚合字段值

Android 上的测试数据库:ProviderTestCase2 还是 RenamingDelegatingContext?

将用户数据存储在 LDAP 而不是 RDBMS 中的原因

唯一(多列)并且在一列中为空

数据库触发器的命名约定

将文本列设为唯一键

Firebase 排行榜排名

如何使用 group_concat 引用值

我将如何为读写操作实现单独的数据库?