c# - MongoDB - 查询字典中的值
问题描述
我有一个Conversations集合,包含这样的Conversation文档(简化为重点):
public class Conversation
{
public ObjectId Id { get; set; }
public Dictionary<ObjectId, DateTime> Members { get; set; }
}
字典成员将成员 ID映射到他们在对话中的输入日期。
然后,在Conversations集合中,如果对于特定的User,我想查询他所在的所有Conversations,我正在做的事情如下:
public List<Conversation> GetConversations(in User user)
{
Query = Builder.Eq(doc => doc.Members.ContainsKey(user.Id), true);
return Find(Query).ToList();
}
问题是,这是正确的做法吗?
- 如果是,为什么?MongoDB 如何处理这种查询(乍一看,它看起来很复杂,需要大量的计算能力)?
- 如果不是,你怎么做得更好?
解决方案
Query = Builder.Eq(doc => doc.Members.ContainsKey(user.Id), true);
看起来像收藏扫描。
您是否可以跟踪每个成员文档中的对话?它可以通过数组或子集合来实现。
推荐阅读
- azure - 在子网级别应用的 Azure NSG 是否会影响该子网上的 VM 之间的通信?
- c++ - 返回引用和常量引用有何不同?
- java - 如何将数据插入数组
- ios - 在 MapKit 中的地图内设置单个区域
- javascript - javascript函数参数中的字符串返回“输入意外结束”
- python - 如何检查python中是否存在重复的键行值并选择python中具有最大数字列值的行
- javascript - Chrome 扩展 - DOM 未定义 提交表单后
- mongodb - 如何在任意深度更新 MongoDB 字段名称
- apache-flink - PyFlink - 指定表格格式并处理嵌套的 JSON 字符串数据
- testing - 如何在 Tosca 中创建测试事件