24

How can I add BsonArray to BsonDocument in MongoDB using a C# driver? I want a result something like this

{ 
    author: 'joe',
    title : 'Yet another blog post',
    text : 'Here is the text...',
    tags : [ 'example', 'joe' ],
    comments : [ { author: 'jim', comment: 'I disagree' },
                 { author: 'nancy', comment: 'Good post' }
    ]
} 
1
  • Can you please clarify you question. What are you trying to do? Create above described document thorugh BsonDocument? Or you trying to add comment to existing author? Mb your show code.. Commented Jun 7, 2011 at 6:28

2 Answers 2

32

You can create the above document in C# with the following statement:

var document = new BsonDocument {
    { "author", "joe" },
    { "title", "yet another blog post" },
    { "text", "here is the text..." },
    { "tags", new BsonArray { "example", "joe" } },
    { "comments", new BsonArray {
        new BsonDocument { { "author", "jim" }, { "comment", "I disagree" } },
        new BsonDocument { { "author", "nancy" }, { "comment", "Good post" } }
    }}
};

You can test whether you produced the correct result with:

var json = document.ToJson();
Sign up to request clarification or add additional context in comments.

2 Comments

I'd also add that any null values are ignored by default.
how to handle with { "$concat":[ {"$toString": 1}, '2', {"$toString":3} ]} ?
12

you can also add the array after the BsonDocument already exists, like this:

BsonDocument  doc = new BsonDocument {
    { "author", "joe" },
        { "title", "yet another blog post" },
     { "text", "here is the text..." }
};

BsonArray  array1 = new BsonArray {
        "example", "joe"
    };


BsonArray  array2 = new BsonArray {
        new BsonDocument { { "author", "jim" }, { "comment", "I disagree" } },
        new BsonDocument { { "author", "nancy" }, { "comment", "Good post" } }
    };


doc.Add("tags", array1);
doc.Add("comments", array2);

1 Comment

helped on how to create a bson array without having a bsondocument inside.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.