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