sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan søger du i en række af objekter i mongodb

Lad os sige, at du vil søge efter den awaiting status for samlingen users

db.users.find({"version.files.status":"awaiting"}).pretty()

Den vil automatisk søge i arrays.

Opdatering er dog en smule anderledes, og du bør bruge arrayFilter :

db.users.updateOne(
  {
    "version.files._id": "606592b3c5d509071857f6e8",
  },
  {
    $set: {
      "version.$[version].files.$[file].url": "something else",
    },
  },
  {
    arrayFilters: [
      { "version._id": "606592b1c5d509071857f6e7" },
      { "file._id": "606592b3c5d509071857f6e8" },
    ],
  }
);

Sørg for at have et indeks på din find forespørgsel:

For ovenstående eksempel

db.users.createIndex({"version.files._id":1},{background:true})

Mange flere eksempler er tilgængelige på Mongo Doc

REDIGER

I henhold til din kommentar er her et fungerende eksempel:

db.users.findOneAndUpdate(
  { "version.files._id": "606592b3c5d509071857f6e8" },
  {
    $set: {
      "version.$[version].files.$[file].url": "Test URL",
      "version.$[version].files.$[file].status": "Test status",
    },
  },
  {
    returnNewDocument: true,
    arrayFilters: [
      { "version._id": "606592b1c5d509071857f6e7" },
      { "file._id": "606592b3c5d509071857f6e8" },
    ],
  }
);



  1. Importer en JSON-fil til MongoDB med mongoimport

  2. MongoDB:Tjek om værdien er null, eller arrayet er tomt

  3. MongoDB C#:Update.pullAll fjerner ikke elementer

  4. VersionError:Ingen matchende dokument fundet fejl på Node.js/Mongoose