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

Få hele rækken af ​​en af ​​dens strenge. Array er inde i et andet array. Mongodb/Javascript

Brug af aggregeringsforespørgsel:

  • $match betingelse, sæt indlejret $ememMatch til 2 niveauer
  • $reduce for at gentage loop af vid-array, indstil initial [], tjek betingelsen, hvis streng i det aktuelle array, returner derefter det aktuelle array ellers returner initialværdien
let searchString = "adfsdfasfd";
db.collection.aggregate([
  {
    $match: {
      vid: { $elemMatch: { $elemMatch: { $in: [searchString] } } }
    }
  },
  {
    $addFields: {
      vid: {
        $reduce: {
          input: "$vid",
          initialValue: [],
          in: {
            $cond: [{ $in: [searchString, "$$this"] }, "$$this", "$$value"]
          }
        }
      }
    }
  }
])

Legeplads

Resultat:

[
  {
    "vid": [
      "adfsdfasfd",
      "this is some sample text",
      "https://example.com"
    ]
  }
]

Brug af søgeforespørgsel:

  • Sæt matchtilstand på samme måde som ovenfor
  • til projektion få et matchresultat, men i samme indlejrede array
let searchString = "adfsdfasfd";
db.collection.find(
  { vid: { $elemMatch: { $elemMatch: { $in: [searchString] } } } }
).project({ "vid.$": 1, _id: 0 }).toArray()

Legeplads

Resultat:

[
  {
    "vid": [
      [
        "adfsdfasfd",
        "this is some sample text",
        "https://example.com"
      ]
    ]
  }
]



  1. Oprettelse af en formular til redigering af indlejrede dokumenter med MongoMapper

  2. MongoDB returnerer True, hvis dokumentet findes

  3. Mongoose indlejrede skema vs indlejrede modeller

  4. Node.js og Passport Object har ingen metode validPassword