Question

Can anyone help to get the correct .NET (C# or VB.NET) of the following query:

> db.usercollection.find( {}, { username:1, _id: 0 } )
   { "username" : "testuser1" }
   { "username" : "testuser2" }
   { "username" : "testuser3" }

Basically I only want to return certain fields of the document. Also is there anyway mongodb c# driver will convert the result into a json format that can populate a grid (extjs grid) or chart, without me doing the conversion explicitly.

 Using mongo.RequestStart(db)
        Dim collection = db.GetCollection(Of BsonDocument)("usercollection").FindAll()
        Dim collection3 = db.GetCollection(Of BsonDocument)("usercollection").
                        Find({}, {"username:1", "_id:0"})

The collection3 line is not correct.

Tried the following too:

        For Each ruleSet In collection
            Dim rules As String = ruleSet.GetValue(0).AsString
            response = rules & response
        Next

But this gives error:

UNABLE TO CAST OBJECT OF TYPE 'MONGODB.BSON.BSONOBJECTID TO TYPE MONGODB.BSON.BSONSTRING
Was it helpful?

Solution

If you want to limit the results to specific fields you need to use SetFields on the MongoCursor like so:

MongoCursor<BsonDocument> cursor = _db.GetCollection<BsonDocument>.FindAll(); // or any other query
cursor.SetFields("username");

MongoD uses BSON which means Binary JSON. If you want to use it as a JSON use the extension method:

BsonDocument document;
document.ToJson();
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top