Skip to main content

Comparação entre Mongoshell (mongosh) e CSharp | MongoDB | Banco de dados

  • Comparação entre Mongoshell (mongosh) e CSharp | MongoDB | Banco de dados

Documentação – Operações Essenciais no MongoDB (Mongo Shell vs C#)

Esta documentação mostra lado a lado como realizar as operações essenciais no MongoDB usando:

  • Mongo Shell (mongosh)
  • C# com MongoDB.Driver

Exemplos usando coleção users no banco appdb.


1) Preparação do Ambiente

Mongo Shell (mongosh)

use appdb

C# (MongoDB.Driver)

using MongoDB.Bson;
using MongoDB.Driver;

var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("appdb");
var collection = database.GetCollection<BsonDocument>("users");

2) Inserção (Insert)

2.1 Inserir 1 documento

Mongo Shell (mongosh)

db.users.insertOne({
name: "Ana",
age: 25,
active: true
})

C#

var doc = new BsonDocument
{
{ "name", "Ana" },
{ "age", 25 },
{ "active", true }
};

collection.InsertOne(doc);

2.2 Inserir vários documentos

Mongo Shell (mongosh)

db.users.insertMany([
{ name: "João", age: 30, active: true },
{ name: "Maria", age: 22, active: false }
])

C#

var docs = new List<BsonDocument>
{
new BsonDocument { { "name", "João" }, { "age", 30 }, { "active", true } },
new BsonDocument { { "name", "Maria" }, { "age", 22 }, { "active", false } }
};

collection.InsertMany(docs);

3) Leitura e Filtragens (Find)

3.1 Buscar todos os documentos

Mongo Shell (mongosh)

db.users.find()

C#

var result = collection.Find(new BsonDocument()).ToList();

3.2 Filtrar por campo simples

Exemplo: buscar usuários com active = true

Mongo Shell (mongosh)

db.users.find({ active: true })

C#

var filter = Builders<BsonDocument>.Filter.Eq("active", true);
var result = collection.Find(filter).ToList();

3.3 Filtrar por comparação (gt,gt, lt, etc.)

Exemplo: usuários com age > 25

Mongo Shell (mongosh)

db.users.find({ age: { $gt: 25 } })

C#

var filter = Builders<BsonDocument>.Filter.Gt("age", 25);
var result = collection.Find(filter).ToList();

3.4 Filtrar por múltiplas condições (AND)

Exemplo: age > 20 e active = true

Mongo Shell (mongosh)

db.users.find({
age: { $gt: 20 },
active: true
})

C#

var filter = Builders<BsonDocument>.Filter.And(
Builders<BsonDocument>.Filter.Gt("age", 20),
Builders<BsonDocument>.Filter.Eq("active", true)
);

var result = collection.Find(filter).ToList();

3.5 Filtrar com OR ($or)

Exemplo: age < 18 ou active = false

Mongo Shell (mongosh)

db.users.find({
$or: [
{ age: { $lt: 18 } },
{ active: false }
]
})

C#

var filter = Builders<BsonDocument>.Filter.Or(
Builders<BsonDocument>.Filter.Lt("age", 18),
Builders<BsonDocument>.Filter.Eq("active", false)
);

var result = collection.Find(filter).ToList();

3.6 Buscar por lista (IN com $in)

Exemplo: buscar nomes dentro de uma lista

Mongo Shell (mongosh)

db.users.find({
name: { $in: ["Ana", "Maria"] }
})

C#

var filter = Builders<BsonDocument>.Filter.In("name", new[] { "Ana", "Maria" });
var result = collection.Find(filter).ToList();

3.7 Selecionar campos (Projection)

Exemplo: retornar apenas name e age

Mongo Shell (mongosh)

db.users.find(
{},
{ name: 1, age: 1, _id: 0 }
)

C#

var projection = Builders<BsonDocument>.Projection
.Include("name")
.Include("age")
.Exclude("_id");

var result = collection.Find(new BsonDocument())
.Project(projection)
.ToList();

3.8 Ordenar (Sort)

Exemplo: ordenar por age crescente

Mongo Shell (mongosh)

db.users.find().sort({ age: 1 })

C#

var result = collection.Find(new BsonDocument())
.Sort(Builders<BsonDocument>.Sort.Ascending("age"))
.ToList();

3.9 Paginação (Skip + Limit)

Exemplo: pular 5 e trazer 10

Mongo Shell (mongosh)

db.users.find().skip(5).limit(10)

C#

var result = collection.Find(new BsonDocument())
.Skip(5)
.Limit(10)
.ToList();

4) Atualização (Update)

4.1 Atualizar um documento (updateOne)

Exemplo: mudar active para false onde name = "Ana"

Mongo Shell (mongosh)

db.users.updateOne(
{ name: "Ana" },
{ $set: { active: false } }
)

C#

var filter = Builders<BsonDocument>.Filter.Eq("name", "Ana");
var update = Builders<BsonDocument>.Update.Set("active", false);

collection.UpdateOne(filter, update);

4.2 Atualizar vários documentos (updateMany)

Exemplo: setar active = true onde age > 18

Mongo Shell (mongosh)

db.users.updateMany(
{ age: { $gt: 18 } },
{ $set: { active: true } }
)

C#

var filter = Builders<BsonDocument>.Filter.Gt("age", 18);
var update = Builders<BsonDocument>.Update.Set("active", true);

collection.UpdateMany(filter, update);

4.3 Incremento ($inc)

Exemplo: somar +1 na idade

Mongo Shell (mongosh)

db.users.updateOne(
{ name: "João" },
{ $inc: { age: 1 } }
)

C#

var filter = Builders<BsonDocument>.Filter.Eq("name", "João");
var update = Builders<BsonDocument>.Update.Inc("age", 1);

collection.UpdateOne(filter, update);

4.4 Atualizar com Upsert (cria se não existir)

Exemplo: criar usuário se não existir

Mongo Shell (mongosh)

db.users.updateOne(
{ name: "Carlos" },
{ $set: { age: 40, active: true } },
{ upsert: true }
)

C#

var filter = Builders<BsonDocument>.Filter.Eq("name", "Carlos");
var update = Builders<BsonDocument>.Update
.Set("age", 40)
.Set("active", true);

collection.UpdateOne(filter, update, new UpdateOptions { IsUpsert = true });

5) Deleção (Delete)

5.1 Deletar um documento (deleteOne)

Exemplo: deletar onde name = "Maria"

Mongo Shell (mongosh)

db.users.deleteOne({ name: "Maria" })

C#

var filter = Builders<BsonDocument>.Filter.Eq("name", "Maria");
collection.DeleteOne(filter);

5.2 Deletar vários documentos (deleteMany)

Exemplo: deletar usuários inativos

Mongo Shell (mongosh)

db.users.deleteMany({ active: false })

C#

var filter = Builders<BsonDocument>.Filter.Eq("active", false);
collection.DeleteMany(filter);

6) Contagem e Existência

6.1 Contar documentos (Count)

Mongo Shell (mongosh)

db.users.countDocuments({ active: true })

C#

var filter = Builders<BsonDocument>.Filter.Eq("active", true);
var count = collection.CountDocuments(filter);

6.2 Verificar se existe (Exists)

Exemplo: verificar se existe usuário name = "Ana"

Mongo Shell (mongosh)

db.users.findOne({ name: "Ana" }) != null

C#

var filter = Builders<BsonDocument>.Filter.Eq("name", "Ana");
var exists = collection.Find(filter).Limit(1).Any();

7) Busca por _id

Mongo Shell (mongosh)

db.users.find({ _id: ObjectId("65f1a2b3c4d5e6f789012345") })

C#

var id = ObjectId.Parse("65f1a2b3c4d5e6f789012345");
var filter = Builders<BsonDocument>.Filter.Eq("_id", id);

var result = collection.Find(filter).FirstOrDefault();

8) Operações Extras Úteis

8.1 ReplaceOne (substituir documento inteiro)

Mongo Shell (mongosh)

db.users.replaceOne(
{ name: "Ana" },
{ name: "Ana", age: 26, active: true }
)

C#

var filter = Builders<BsonDocument>.Filter.Eq("name", "Ana");
var replacement = new BsonDocument
{
{ "name", "Ana" },
{ "age", 26 },
{ "active", true }
};

collection.ReplaceOne(filter, replacement);

8.2 Remover campo ($unset)

Mongo Shell (mongosh)

db.users.updateOne(
{ name: "João" },
{ $unset: { active: "" } }
)

C#

var filter = Builders<BsonDocument>.Filter.Eq("name", "João");
var update = Builders<BsonDocument>.Update.Unset("active");

collection.UpdateOne(filter, update);

8.3 Criar índice

Exemplo: índice no campo name

Mongo Shell (mongosh)

db.users.createIndex({ name: 1 })

C#

var indexKeys = Builders<BsonDocument>.IndexKeys.Ascending("name");
collection.Indexes.CreateOne(new CreateIndexModel<BsonDocument>(indexKeys));

8.4 Buscar com Regex (texto)

Exemplo: nomes começando com "A"

Mongo Shell (mongosh)

db.users.find({ name: { $regex: "^A" } })

C#

var filter = Builders<BsonDocument>.Filter.Regex("name", new BsonRegularExpression("^A"));
var result = collection.Find(filter).ToList();