MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Nazwa pola batchSize ignorowana w projekcji pola

Masz rację, że sterownik nieprawidłowo interpretuje to jako batchSize i ignoruje instrukcję projekcji.

Właściwym sposobem na zrobienie tego w nowoczesnych wydaniach sterowników jest użycie .project() zamiast tego „metoda kursora”. Jest to bardziej spójne z implementacjami sterowników innych języków.

    db.collection('collection').find()
      .project({ name: 1, batchSize: 1})
      .toArray();

Jako pełna demonstracja:

const mongodb = require('mongodb'),
      MongoClient = mongodb.MongoClient;


(async function() {

  let db;

  try {
    db = await MongoClient.connect('mongodb://localhost/test');

    // New form uses .project() as a cursor method
    let result = await db.collection('collection').find()
      .project({ name: 1, batchSize: 1})
      .toArray();

    console.log(JSON.stringify(result,undefined,2));

    // Legacy form confuses this as being a legacy "cursor option"
    let other = await db.collection('collection')
      .find({},{ name: 1, batchSize: 1 })
      .toArray();

    console.log(JSON.stringify(other,undefined,2));

  } catch(e) {
    console.error(e)
  } finally {
    db.close()
  }

})()

Tworzy dane wyjściowe:

[
  {
    "_id": "594baf96256597ec035df23c",
    "name": "Batch 1",
    "batchSize": 30
  },
  {
    "_id": "594baf96256597ec035df234",
    "name": "Batch 2",
    "batchSize": 50
  }
]
[
  {
    "_id": "594baf96256597ec035df23c",
    "name": "Batch 1",
    "batchSize": 30,
    "users": []
  },
  {
    "_id": "594baf96256597ec035df234",
    "name": "Batch 2",
    "batchSize": 50,
    "users": []
  }
]

Gdzie pierwszy formularz wyjściowy jest poprawiony, używając .project()



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jaki jest prawidłowy sposób indeksowania w MongoDB, gdy istnieje duża kombinacja pól

  2. Django-nonrel vs Django-mongodb vs Mongokit vs pymongo native

  3. Porównanie dat w mongodb

  4. Mongoose - wyszukiwanie poddokumentów według kryteriów

  5. Średnie zapytania agregacyjne w Meteor