sql >> Database >  >> NoSQL >> MongoDB

batchSize veldnaam genegeerd in Field Projection

Je hebt gelijk dat het stuurprogramma dit ten onrechte interpreteert als de batchSize optie en negeert de projectieverklaring.

De juiste manier om dit te doen in moderne releases van stuurprogramma's is om daadwerkelijk de .project() . te gebruiken "cursormethode" in plaats daarvan. Dit is consistenter met implementaties van andere taalstuurprogramma's.

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

Als volledige demonstratie:

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

})()

Produceert de uitvoer:

[
  {
    "_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": []
  }
]

Waar het eerste uitvoerformulier het gecorrigeerde is, gebruikt u .project()



  1. Module socket niet gevonden lua

  2. hoe string naar numerieke waarden in mongodb te converteren

  3. Snelste manier om dubbele documenten in mongodb te verwijderen

  4. Hoe kan ik redis-server stoppen?