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

Pobierz całą tablicę według jednego z jej ciągów. Tablica znajduje się wewnątrz innej tablicy. Mongodb/Javascript

Korzystanie z zapytania agregującego:

  • $match warunek, wstaw zagnieżdżony $ememMatch dla stanu 2-poziomowego
  • $reduce aby iterować pętlę tablicy vid, ustaw inicjał [], sprawdź warunek, czy łańcuch w bieżącej tablicy, a następnie zwróć bieżącą tablicę, w przeciwnym razie zwróć wartość początkową
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"]
          }
        }
      }
    }
  }
])

Plac zabaw

Wynik:

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

Korzystanie z zapytania wyszukiwania:

  • Ustaw warunek dopasowania taki sam jak powyżej
  • dla projekcji uzyskaj wynik dopasowania, ale w tej samej zagnieżdżonej tablicy
let searchString = "adfsdfasfd";
db.collection.find(
  { vid: { $elemMatch: { $elemMatch: { $in: [searchString] } } } }
).project({ "vid.$": 1, _id: 0 }).toArray()

Plac zabaw

Wynik:

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Oplog MongoDB zawiera rekordy z kropkami w nazwach kluczy, o które nie można zapytać, afaict

  2. Sortuj zagnieżdżoną tablicę obiektów

  3. Mongo:znajdź przedmioty, które nie mają określonego pola

  4. Przekazany argument musi być pojedynczym ciągiem 12 bajtów

  5. MongoDB zapytanie IN tablicy obiektu