MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB C# Driver e ObjectId generati dal server

Ricevimento dei documenti nell'ordine di inserzione da una raccolta limitata

Le raccolte limitate mantengono i documenti nell'ordine di inserimento, quindi dovresti idealmente utilizzare ordine naturale piuttosto che fare affidamento sul timestamp nel _id generato . Il tuo cursore a coda leggerà i documenti in ordine naturale, quindi non dovresti fare supposizioni basate su _id .

Generazione di _id lato server

Per generare _id lato server utilizzando il driver C# è necessario:

  • imposta l'attributo della classe [BsonIgnoreIfDefault]
  • imposta l'attributo di raccolta AssignIdOnInsert = false
  • inserisci un documento senza un _id

Esempio:

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