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
usersno bancoappdb.
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 (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();