arrays - 当我运行过滤器时,MongoDB Compass 返回所有行
问题描述
我正在尝试在 MongoDB Compass 中运行一个过滤器,它返回所有行而不是我正在寻找的行。我可以在与我的数据库类似的示例数据库上运行过滤器而不会出现任何问题。
https://i.stack.imgur.com/IBivJ.png
这是我用来添加记录并从中选择的代码。
public class NoSQLDataAccess
{
// Create an instance of data factory
public NoSQLDataFactory noSQLDataFactory;
public List<dynamic> DocumentDetails { get; set; }
private IMongoCollection<dynamic> collection;
private BsonDocument bsonDocument = new BsonDocument();
public NoSQLDataAccess() { }
public void TestNoSQL()
{
MongoClient client;
IMongoDatabase database;
string connectionString = ConfigurationManager.AppSettings["NoSQLConnectionString"];
client = new MongoClient(connectionString);
database = client.GetDatabase("TestDatabase");
collection = database.GetCollection<dynamic>("TestCollection");
// Insert
List<Layer> layers = new List<Layer>();
layers.Add(new Layer { LayerId = 117368, Description = "BOOTHLAYER" });
layers.Add(new Layer { LayerId = 117369, Description = "DRAWINGLAYER" });
layers.Add(new Layer { LayerId = 117370, Description = "LAYER3" });
List<Element> elements = new List<Element>();
elements.Add(new Element { ElementId = 9250122, Type = "polyline" });
elements.Add(new Element { ElementId = 9250123, Type = "polyline" });
List<dynamic> documentDetails = new List<dynamic>();
documentDetails.Add(new DrawingDTO { Layers = layers, Elements = elements });
collection.InsertMany(documentDetails);
List<FilterDetails> filterDetails = new List<FilterDetails>();
filterDetails.Add(new FilterDetails { Type = "layers.id", Value = "117368" });
foreach (FilterDetails detail in filterDetails)
{
bsonDocument.Add(new BsonElement(detail.Type, detail.Value));
}
List<dynamic> results = collection.Find(bsonDocument.ToBsonDocument()).ToList();
}
}
我已经能够使用 MongoDB shell 获得所需的结果,但我无法在 C# 中复制结果。
这是 MongoDB shell 中的解决方案:
db.TestCollection.find({"layers.id": 117368}, {_id:0, layers: {$elemMatch: {id: 117368}}}).pretty();
解决方案
我发现了一篇与我的问题相似的帖子,对他们有用。我附加的 C# 代码是在我让它正常工作后如何访问它。我使用 MongoDB Compass 来测试查找/插入/更新/删除。
推荐阅读
- c - CS50 第 1 周,学分 - 如果比较问题?整数大小限制?
- python - 用参数装饰类方法
- regex - 正则表达式模式匹配失败
- c# - appsettings.Production.json 在发布后具有来自 appsettings.json 的值
- javascript - 如何通过单击功能获取 div 中元素的详细信息
- ios - 如何在 Swift 5.0 中修复“无法使用类型为 '(MKMapRect)'' 的参数列表调用类型为 'MKMapRect' 的初始化程序”错误
- python - 在 scikit-learn 中查看腌制训练模型的系数/权重
- swift - 非零 UIView 上的 EXC_BAD_ACCESS
- perl - Archive::Tar 模块备份文件和文件夹,但不备份文件夹中的文件
- windows - Windows CMD - 作为数组变量值的代码语句不适用于 IF 命令