查询集合中的所有文档以查找某个文档是不是包含值

Posted

技术标签:

【中文标题】查询集合中的所有文档以查找某个文档是不是包含值【英文标题】:Query all documents in the collection to find if certain document contains value查询集合中的所有文档以查找某个文档是否包含值 【发布时间】:2022-01-17 15:39:10 【问题描述】:

假设我在 mongodb 集合中有数千个文档。每个随机文档都包含具有两个属性(ownerId、ownerRef)的对象 ownerData


   "_id": ....,
   "name": "abc",
   "ownersData":  "ownerId":"1", "ownerRef":"qwer" 
   

使用某些文档包含某些 ownerRef 值的信息来查询所有文档的最快方法应该是什么

【问题讨论】:

在 ownerData.ownerRef 上创建索引 【参考方案1】:

假设您有代表数据库中数据的 C# 对象,您可以使用 linq 实现此目的。

public IEnumerable<Document>? GetDocumentByOwnerRef(string ownerReference)
 => dbContext.Documents.Where(d =>
      d.ownerData is not null && d.ownersData.ownerRef.Equals(ownerReference)
    ).ToList();

编辑:正如@SJFJ 在 cmets 中正确指出的那样;虽然这确实有效,但它扫描您的整个收藏,这是一个非常漫长的过程。在 mongodb 的 ownerRef 列上创建索引将节省性能和加载时间。

【讨论】:

创建索引以防止完整的集合扫描很重要 @SJFJ 欢呼,更新我的答案

以上是关于查询集合中的所有文档以查找某个文档是不是包含值的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB查询以选择具有所有元素都匹配某些条件的数组的文档

通过键字段查找 MongoDB 集合中的所有重复文档

MongoDB中喜欢的EnsureIndex

JQuery如何判断值中是不是包含某个值?

获取文档中的所有集合

Cloud Firestore 如何查找包含特定文档 ID 的子集合的所有文档?