MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Driver MongoDB C# e ObjectIds gerados pelo servidor

Como obter documentos em ordem de inserção de uma coleção limitada


As coleções limitadas mantêm os documentos em ordem de inserção, portanto, o ideal é usar ordem natural em vez de confiar no carimbo de data/hora no _id gerado . Seu cursor tailable lerá os documentos em ordem natural, portanto, não faça suposições com base no _id .

Gerando _id do lado do servidor


Para gerar _id no lado do servidor usando o driver C#, você precisa:
  • defina o atributo de classe [BsonIgnoreIfDefault]
  • defina o atributo de coleção AssignIdOnInsert = false
  • insira um documento sem um _id

Exemplo:
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});
    }
}