Update.PushEachWrapped wrap data in a wrong way adding data to a sub array

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Done
    • Priority: Major - P3
    • None
    • Affects Version/s: 1.8, 1.8.1, 1.8.2
    • Component/s: None
    • Environment:
      .net 4.0
    • None
    • Fully Compatible
    • None
    • None
    • None
    • None
    • None
    • None

      This command:

      var builder = Update.PushEachWrapped("ArrayData", new List<GenericListItem>
      {
      new GenericListItem()

      { Name = "name", Surname = "surname" }
      });


      It is translated in :

      { "$push" : { "ArrayData" : { "$each" : [[{ "Name" : "name", "Surname" : "surname" }]] } } }

      that is wrong, due to a [ in sub elements.

      The right command translation has to be

      { "$push" : { "ArrayData" : { "$each" : [{ "Name" : "name", "Surname" : "surname" }] } } }

      otherwise a sub array will be created.


      The same problem is also present in :
      PushAllWrapped
      AddToSetEachWrapped
      PushEachWrapped

      There is a possible workaround forcing the conversion between IEnumerable<T> to Array. So re-writing the above code in this way

      var builder = Update.PushEachWrapped("ArrayData", new List<GenericListItem>
      {
      new GenericListItem()
      { Name = "name", Surname = "surname" }

      }.ToArray());

      create a correct serialization.

      It seems that the problem is located here in UpdateBuilder.cs

      BsonDocumentWrapper.CreateMultiple(values).Cast<BsonValue>();
      (public UpdateBuilder PushEachWrapped<T> ... raw 1309 in UpdateBuilder.cs) wrap each values in an array

            Assignee:
            Unassigned
            Reporter:
            Luca casali
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: