MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Pilote MongoDB C# et ObjectIds générés par le serveur

Obtenir des documents dans l'ordre d'insertion à partir d'une collection limitée

Les collections plafonnées maintiennent les documents dans l'ordre d'insertion, vous devriez donc idéalement utiliser ordre naturel plutôt que de se fier à l'horodatage dans le _id généré . Votre curseur tailable lira les documents dans l'ordre naturel, donc ne devrait pas faire d'hypothèses basées sur le _id .

Génération de _id côté serveur

Pour générer _id côté serveur à l'aide du pilote C#, vous devez :

  • définir l'attribut de classe [BsonIgnoreIfDefault]
  • définissez l'attribut de collection AssignIdOnInsert = false
  • insérer un document sans _id

Exemple :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Bson.Serialization.Attributes;

public class MyDoc {
    [BsonIgnoreIfDefault]
    public ObjectId? Id;
    public int X;
}

public static class Program {
    public static void Main(string[] args) {
        MongoClient client = new MongoClient(); // connect to localhost
        var server = client.GetServer ();
        var database = server.GetDatabase("test");
        var collectionSettings = new MongoCollectionSettings { AssignIdOnInsert = false };
        var collection = database.GetCollection<MyDoc>("nullid", collectionSettings);

        // Insert document without _id
        collection.Insert(new MyDoc { X = 1});
    }
}