From e24acf4fce42f4c72ebd71c94c577d3240e45152 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Thu, 1 May 2025 14:09:30 +0800 Subject: [PATCH] Update mongodb --- .../MongoDb.Ado.data/MongoDbCommand.cs | 20 +++++++++++-- Src/Asp.NetCore2/MongoDbTest/AdoTest.cs | 29 +++++++++++++------ 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/Src/Asp.NetCore2/MongoDb.Ado.data/MongoDbCommand.cs b/Src/Asp.NetCore2/MongoDb.Ado.data/MongoDbCommand.cs index cfd8310e8..282924dbb 100644 --- a/Src/Asp.NetCore2/MongoDb.Ado.data/MongoDbCommand.cs +++ b/Src/Asp.NetCore2/MongoDb.Ado.data/MongoDbCommand.cs @@ -3,6 +3,7 @@ using System.Data.Common; using System.Data; using MongoDB.Bson; using MongoDB.Driver; +using System.Linq; namespace MongoDb.Ado.data { @@ -73,11 +74,24 @@ namespace MongoDb.Ado.data if (operation == "find") { var filter = string.IsNullOrWhiteSpace(json) ? FilterDefinition.Empty : BsonDocument.Parse(json); - var document = collection.Find(filter).FirstOrDefault(); - return document; + + // 设置投影排除 "_id" 字段,确保返回的结果不包含 _id 字段 + var projection = Builders.Projection.Exclude("_id"); + + // 执行查询并限制返回一条记录 + var document = collection.Find(filter).Project(projection).FirstOrDefault(); + + // 如果查询到结果且文档非空,则获取第一个字段的值 + if (document != null && document.Elements.Any()) + { + var firstElement = document.Elements.First(); // 获取第一个字段(列) + return firstElement.Value; // 返回该字段的值 + } + + return null; // 如果没有结果或没有字段,返回 null } - throw new NotSupportedException("只支持 find 操作。"); + return null; } protected override DbDataReader ExecuteDbDataReader(CommandBehavior behavior) diff --git a/Src/Asp.NetCore2/MongoDbTest/AdoTest.cs b/Src/Asp.NetCore2/MongoDbTest/AdoTest.cs index 3196f6304..3af14207f 100644 --- a/Src/Asp.NetCore2/MongoDbTest/AdoTest.cs +++ b/Src/Asp.NetCore2/MongoDbTest/AdoTest.cs @@ -21,18 +21,29 @@ namespace MongoDbTest private static void MongoDbCommandTest() { - var connection = new MongoDbConnection(DbHelper.SqlSugarConnectionString); - connection.Open(); - MongoDbCommand mongoDbCommand = new MongoDbCommand(" find b { age: { $gt: 31 } }", connection); - using (var reader = mongoDbCommand.ExecuteReader()) - { - while (reader.Read()) + //ExecuteReader + { + var connection = new MongoDbConnection(DbHelper.SqlSugarConnectionString); + connection.Open(); + MongoDbCommand mongoDbCommand = new MongoDbCommand(" find b { age: { $gt: 31 } }", connection); + using (var reader = mongoDbCommand.ExecuteReader()) { - var name=reader.GetString("name"); - var age = reader.GetInt32("age"); + while (reader.Read()) + { + var name = reader.GetString("name"); + var age = reader.GetInt32("age"); + } } + connection.Close(); + } + //ExecuteScalar + { + var connection = new MongoDbConnection(DbHelper.SqlSugarConnectionString); + connection.Open(); + MongoDbCommand mongoDbCommand = new MongoDbCommand(" find b { age: { $gt: 31 } }", connection); + var value=mongoDbCommand.ExecuteScalar(); + connection.Close(); } - connection.Close(); } private static void MongoDbConnectionTest()