MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Вземете целия масив по един от неговите низове. Масивът е в друг масив. Mongodb/Javascript

Използване на заявка за агрегиране:

  • $match условие, поставете вложен $ememMatch за състояние на 2 нива
  • $reduce за итериране на цикъл на vid масив, задайте начален [], проверете условието, ако низът е в текущия масив, след това върнете текущия масив, в противен случай върнете първоначалната стойност
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"]
          }
        }
      }
    }
  }
])

Playground

Резултат:

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

Използване на заявка за търсене:

  • Поставете същото условие за съответствие като по-горе
  • за прожекция получавате резултат от съвпадение, но в същия вложен масив
let searchString = "adfsdfasfd";
db.collection.find(
  { vid: { $elemMatch: { $elemMatch: { $in: [searchString] } } } }
).project({ "vid.$": 1, _id: 0 }).toArray()

Playground

Резултат:

[
  {
    "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. MongoDB заявка IN масив от обект

  2. Преоформяне на документа на MongoDB

  3. Времето за зареждане на RSpec е невероятно дълго на OS X

  4. Изчислете средната стойност на mongodb документ

  5. Вмъкване на изображение в MongoDB чрез Node.js