« Mongodb and csharp » : différence entre les versions
De Banane Atomic
Aller à la navigationAller à la recherche
(→Errors) |
(→Filter) |
||
Ligne 16 : | Ligne 16 : | ||
<kode lang='cs'> | <kode lang='cs'> | ||
var builder = Builders<MyClass>.Filter; | var builder = Builders<MyClass>.Filter; | ||
FilterDefinition<MyClass> filter = | FilterDefinition<MyClass> filter = builder.Empty; | ||
filter &= builder.Exists(x => x.Property1); | |||
filter &= builder.Eq(x => x.Property1, "id"); | filter &= builder.Eq(x => x.Property1, "id"); | ||
filter &= builder.In(x => x.Property1, new[] { "id1", "id2" }); // filter by Property1 equals to one of the ids | filter &= builder.In(x => x.Property1, new[] { "id1", "id2" }); // filter by Property1 equals to one of the ids |
Version du 8 mai 2024 à 13:44
Links
- Using LINQ to Query MongoDB in a .NET Core Application
- Create a RESTful API with .NET Core and MongoDB
- Joining Collections in MongoDB with .NET Core and an Aggregation Pipeline
- C# and MongoDB
Access to a collection
var mongoClient = new MongoClient("MONGODB_CONNECTION_STRING"); var database = mongoClient.GetDatabase("DB_NAME"); var collection = database.GetCollection<Collection>("COLLECTION_NAME"); |
Filter
var builder = Builders<MyClass>.Filter; FilterDefinition<MyClass> filter = builder.Empty; filter &= builder.Exists(x => x.Property1); filter &= builder.Eq(x => x.Property1, "id"); filter &= builder.In(x => x.Property1, new[] { "id1", "id2" }); // filter by Property1 equals to one of the ids var result = (await collection.FindAsync(filter)).ToList(); |
Pipeline
var stages = new BsonDocument[] { MatchStage(getTimeSeriesQuery), ProjectionStage(), SortStage() }; var pipeline = PipelineDefinition<InputClass, OutputClass>.Create(stages); var results = (await myCollection.AggregateAsync(pipeline)).List(); BsonDocument MatchStage(GetTimeSeriesQuery getTimeSeriesQuery) { var match = new BsonDocument("property1", "value1"); if (!string.IsNullOrEmpty(variable2)) { match.AddRange( new BsonDocument("property2", variable2) ); } return new BsonDocument("$match", match); } BsonDocument ProjectionStage() => new BsonDocument( "$project", new BsonDocument { { "_id", 0 }, { "property1", 1 }, { "property2", 1 } } ); BsonDocument SortStage() => new BsonDocument("$sort", new BsonDocument("timestamp", 1)); |
Log
var mongoUrl = new MongoUrl("MONGODB_CONNECTION_STRING"); var mongoClientSettings = MongoClientSettings.FromUrl(mongoUrl); mongoClientSettings.ClusterConfigurator = cb => { cb.Subscribe<CommandStartedEvent>(e => { logger.LogTrace($"{e.CommandName} - {e.Command.ToJson()}"); }); }; this.mongoClient = new MongoClient(mongoClientSettings); |
Configure the Log so it will be displayed in Visual Studio Output Debug window.
Errors
Requested value '_id' was not found
await collection.Find(_ => true).ToListAsync(); // query with an id (the objects you want to retrieve must have a property ObjectId Id) await collection.Find(x => x.Id == new ObjectId("...")).ToListAsync(); |
Serializer for MyClass does not represent members as fields
Unable to deserialize a document into a Dictionary.
public class MyClass : Dictionary<string, int> { public ObjectId Id { get; set; } } var collection = database.GetCollection<MyClass>(collectionName); await collection.Find(x => x.Id == new ObjectId("...")).ToListAsync(); |