MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB C#-Treiber und vom Server generierte ObjectIds

Dokumente in der Einfügereihenfolge aus einer begrenzten Sammlung abrufen

Begrenzte Sammlungen verwalten Dokumente in der Reihenfolge der Einfügungen, daher sollten Sie idealerweise natürliche Reihenfolge anstatt sich auf den Zeitstempel in der generierten _id zu verlassen . Ihr Tailable-Cursor liest Dokumente in natürlicher Reihenfolge, also sollten Sie keine Annahmen basierend auf der _id treffen .

Serverseitige _id wird generiert

Zum Generieren von _id Auf der Serverseite mit dem C#-Treiber müssen Sie:

  • Setzen Sie das Klassenattribut [BsonIgnoreIfDefault]
  • setzen Sie das Sammlungsattribut AssignIdOnInsert = false
  • fügen Sie ein Dokument ohne _id ein

Beispiel:

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