MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

sử dụng cho thời gian tạo ObjectId mongodb

Tôi cho rằng vì MongoDB ObjectId chứa dấu thời gian, bạn có thể sắp xếp theo 'ngày tạo' nếu bạn sắp xếp theo objectId:

items.find.sort( [['_id', -1]] ) // get all items desc by created date.

Và nếu bạn muốn có 30 mục được tạo cuối cùng, bạn có thể sử dụng truy vấn sau:

items.find.sort( [['_id', -1]] ).limit(30) // get last 30 createad items 

Tôi thực sự không chắc, tôi chỉ cho rằng đặt hàng bằng _id sẽ hoạt động như mô tả ở trên. Tôi sẽ tạo một số thử nghiệm sau.

Cập nhật:

Vâng, nó là như vậy. Nếu bạn đặt hàng trước _id, bạn sẽ tự động đặt hàng trước _id ngày tạo. Tôi đã thực hiện một bài kiểm tra nhỏ trong c #, mb ai đó quan tâm đến nó:

  public class Item
  {
    [BsonId]
    public ObjectId Id { get; set; }

    public DateTime CreatedDate { get; set; }

    public int Index { get; set; }
  }



 [TestMethod]
 public void IdSortingTest()
 {
   var server = MongoServer.Create("mongodb://localhost:27020");
   var database = server.GetDatabase("tesdb");

   var collection = database.GetCollection("idSortTest");
   collection.RemoveAll();

   for (int i = 0; i <= 500; i++)
   {
     collection.Insert(new Item() { 
             Id = ObjectId.GenerateNewId(), 
             CreatedDate = DateTime.Now, 
             Index = i });
   }

   var cursor = collection.FindAllAs<Item>();
   cursor.SetSortOrder(SortBy.Descending("_id"));
   var itemsOrderedById = cursor.ToList();

   var cursor2 = collection.FindAllAs<Item>();
   cursor2.SetSortOrder(SortBy.Descending("CreatedDate"));
   var itemsOrderedCreatedDate = cursor.ToList();

   for (int i = 0; i <= 500; i++)
   {
     Assert.AreEqual(itemsOrderedById[i].Index, itemsOrderedCreatedDate[i].Index);
   }
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 10 mẹo để cải thiện bảo mật MongoDB của bạn

  2. MongoDB $ stdDevPop

  3. C # mongodb - cách cập nhật các phần tử mảng lồng nhau

  4. Ẩn chính xác thông tin đăng nhập cơ sở dữ liệu

  5. mô-đun pymongo - dnspython phải được cài đặt để sử dụng mongodb + srv:// URIs