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

Có thể tìm thấy một trận đấu đầu tiên hay cuối cùng?

Có, bạn có thể chỉ định hành vi của .findOne() như được hiển thị tốt nhất trong tài liệu trình điều khiển gốc. Sự khác biệt duy nhất ở đó là trong việc áp đặt mongoose, tài liệu "tùy chọn" phải là đối số "thứ ba" được truyền cho phương thức.

Vì vậy, bạn có thể cung cấp đặc điểm kỹ thuật "sắp xếp" cho điều này như được hiển thị trong các tùy chọn có sẵn:

Queue.findOne({ },null,{ "sort": { "_id": -1 } },function(err,doc) {

Chỉ để biết thêm thông tin, bạn có thể thực hiện việc này trong trình bao MongoDB bằng cách sau, sử dụng $orderby tùy chọn truy vấn:

db.collection.findOne({ "$query": { }, "$orderby": { "_id": -1 } })

Cũng là .findOne() phương thức chỉ có thể trả về một tài liệu, nhưng nó thực sự chỉ là một trình bao bọc xung quanh .find() vì vậy tất cả các bổ ngữ đều áp dụng. Gói chỉ gọi .next() trên con trỏ được trả về, trả về tài liệu và loại bỏ con trỏ.

Ví dụ dài hơn này cho thấy các cách khác nhau mà điều này có thể được áp dụng:

var async = require('async'),
    mongoose = require('mongoose'),
    Schema = mongoose.Schema;


mongoose.connect('mongodb://localhost/sequence');

var queueSchema = new Schema({
  name: String,
  same: { type: String, default: "same" }
});

var Queue = mongoose.model( "Queue", queueSchema );

var count = 0;

async.series(
  [

    // Remove any documents
    function(callback) {
      Queue.remove(function(err) {
        if (err) throw err;
        callback();
      });
    },

    // Insert some new ones
    function(callback) {
      async.eachSeries(
        ["one","two","three"],
        function(item,callback) {
          var queue = new Queue({ name: item });
          queue.save(function(err,doc) {
            if (err) throw err;
            console.dir(doc);
            callback(err,doc);
          });
        },
        function(err) {
          callback(err);
        }
      );
    },

    function(callback) {
      async.whilst(
        function() { return count < 2 },
        function(callback) {
          count++
          async.series(
            [
              // findOne is just the first one
              function(callback) {
                Queue.findOne({ "same": "same" },function(err,doc) {
                  if (err) throw err;
                  console.log( "FindOne:\n%s", doc );
                  callback();
                });
              },

              // Or is sorted
              function(callback) {
                Queue.findOne(
                  { "same": "same" },
                  null,
                  { "sort": { "_id": -1 } },
                  function(err,doc) {
                    if (err) throw err;
                    console.log("FindOne last:\n%s", doc );
                    callback();
                  }
                );
              },

              // find is ordered but not singular
              function(callback) {
                async.eachSeries(
                  ["first","last"],
                  function(label,callback) {
                    var direction = ( label == "first" ) ? 1 : -1;
                    var query = Queue.find({ "same": "same" })
                      .sort({ "_id": direction })
                      .limit(1);
                    query.exec(function(err,docs) {
                      if (err) throw err;
                      console.log( ".find() %s:\n%s", label, docs[0] );
                      callback();
                    });
                  },
                  function(err) {
                    callback();
                  }
                );
              },

              // findAndModify takes a sort
              function(callback) {
                Queue.findOneAndUpdate(
                  { "same": "same" },
                  { "$set": { "same": "different" } },
                  { "sort": { "_id": -1 } },
                  function(err,doc) {
                    if (err) throw err;
                    console.log( "findOneAndUpdate:\n%s", doc );
                    callback();
                  }
                );
              }

            ],function(err) {
              callback();
            }
          );
        },
        function(err) {
          callback();
        }
      );
    }
  ],function(err) {
    console.log("done");1
    mongoose.disconnect();
  }
);


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tìm kiếm toàn văn bằng mongodb trong .net

  2. Làm cách nào để thêm các đối tượng mới bên trong mảng lồng nhau cho mongodb bằng cách sử dụng node.js?

  3. Mongo lập chỉ mục trên mảng đối tượng so với đối tượng

  4. Cập nhật đường dẫn 'x' sẽ tạo ra xung đột tại 'x'

  5. Django Authentication Mongodb