【问题标题】:MongoDB - insert single works fine, but array does notMongoDB - 插入单个工作正常,但数组不
【发布时间】:2014-07-22 22:06:05
【问题描述】:

当我插入我的可序列化类答案的单个实例时,插入工作正常。当我尝试插入一个答案数组时,我得到一个异常。当然,我不需要将我的 Answers 数组转换为 BsonDocuments 数组,对吗? (我不需要为单个插入这样做!)

/********* DOES NOT WORK - THROWS EXCEPTION *****************/

public bool addAnswers(AnswerDataModel[] answers)
    {
        bool returnval = true;

        try
        {
            this.answerCollection.Insert(answers, WriteConcern.Acknowledged);
        }
        catch (Exception ex)
        {
            LoggerModel.Log(String.Empty, DateTime.UtcNow, (int)LogSeverity.Severity.Critical, ex.Message + Environment.NewLine + ex.StackTrace);
            returnval = false;
        }

        return returnval;

    }

    /******** WORKS ********/
    public bool addAnswer(AnswerDataModel answer)
    {
        bool returnval = true;

        try
        {
            this.answerCollection.Insert(answer, WriteConcern.Acknowledged);
        }
        catch (Exception ex)
        {
            LoggerModel.Log(String.Empty, DateTime.UtcNow, (int)LogSeverity.Severity.Critical, ex.Message + Environment.NewLine + ex.StackTrace);
            returnval = false;
        }

        return returnval;

    }

还有错误:

Exception details:
Serializer ArraySerializer<AnswerDataModel> expected serialization options of type ArraySerializationOptions, not DocumentSerializationOptions.
  at MongoDB.Bson.Serialization.Serializers.BsonBaseSerializer.EnsureSerializationOptions[TSerializationOptions](IBsonSerializationOptions options) in d:\jenkins\workspace\mongo-csharp-driver-1.x-build\MongoDB.Bson\Serialization\Serializers\BsonBaseSerializer.cs:line 147
  at MongoDB.Bson.Serialization.Serializers.EnumerableSerializerBase`1.Serialize(BsonWriter bsonWriter, Type nominalType, Object value, IBsonSerializationOptions options) in d:\jenkins\workspace\mongo-csharp-driver-1.x-build\MongoDB.Bson\Serialization\Serializers\EnumerableSerializerBase.cs:line 369
  at MongoDB.Driver.Internal.MongoInsertMessage.AddRequest(BsonBuffer buffer, InsertRequest request) in d:\jenkins\workspace\mongo-csharp-driver-1.x-build\MongoDB.Driver\Communication\Messages\MongoInsertMessage.cs:line 149
  at MongoDB.Driver.Internal.MongoInsertMessage.WriteBodyTo(BsonBuffer buffer) in d:\jenkins\workspace\mongo-csharp-driver-1.x-build\MongoDB.Driver\Communication\Messages\MongoInsertMessage.cs:line 91
  at MongoDB.Driver.Internal.MongoRequestMessage.WriteTo(BsonBuffer buffer) in d:\jenkins\workspace\mongo-csharp-driver-1.x-build\MongoDB.Driver\Communication\Messages\MongoRequestMessage.cs:line 66
  at MongoDB.Driver.Operations.InsertOpcodeOperation.Execute(MongoConnection connection) in d:\jenkins\workspace\mongo-csharp-driver-1.x-build\MongoDB.Driver\Operations\InsertOpcodeOperation.cs:line 83
  at MongoDB.Driver.MongoCollection.InsertBatch(Type nominalType, IEnumerable documents, MongoInsertOptions options) in d:\jenkins\workspace\mongo-csharp-driver-1.x-build\MongoDB.Driver\MongoCollection.cs:line 1545
  at MongoDB.Driver.MongoCollection.Insert(Type nominalType, Object document, MongoInsertOptions options) in d:\jenkins\workspace\mongo-csharp-driver-1.x-build\MongoDB.Driver\MongoCollection.cs:line 1396
  at MongoDB.Driver.MongoCollection.Insert(Type nominalType, Object document, WriteConcern writeConcern) in d:\jenkins\workspace\mongo-csharp-driver-1.x-build\MongoDB.Driver\MongoCollection.cs:line 1410
  at MongoDB.Driver.MongoCollection.Insert[TNominalType](TNominalType document, WriteConcern writeConcern) in d:\jenkins\workspace\mongo-csharp-driver-1.x-build\MongoDB.Driver\MongoCollection.cs:line 1368

【问题讨论】:

  • 这是什么语言?编辑:NVM 在错误中看到它是 c#

标签: c# mongodb mongodb-.net-driver


【解决方案1】:

Insert 用于将单个文档插入到集合中。使用InsertBatch 插入多个文档:

this.answerCollection.InsertBatch(answers, WriteConcern.Acknowledged);

【讨论】:

  • 谢谢!为什么这不会在编译时中断?
  • @goldfinger 因为Insert 是一个泛型,可以使用任何类型调用,而不仅仅是那些可以工作的类型。
猜你喜欢
  • 1970-01-01
  • 2019-01-05
  • 2013-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多