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

MongoDB zapytanie IN tablicy obiektu

Nie można tego zrobić za pomocą prostego zapytania. Będziesz musiał przejść przez pętlę pracownicy.departments i dla każdej iteracji dodać jego Departments_id do tablicy. Tę tablicę możesz następnie użyć w drugim wierszu. Najlepiej zrobić to w wybranym przez Ciebie języku.

Aby to ułatwić, będziesz musiał zmienić swój schemat. Jedną z opcji jest przechowywanie informacji o dziale w rekordzie pracownika, ale w twoim przypadku duplikowałbyś dużo danych.

Zamiast tego sugerowałbym, aby każdy dział zawierał listę z identyfikatorami pracowników i datami w ten sposób:

{
        "_id" : ObjectId("4f9643957f8b9a3f0a000004"),
        "dept_name" : "Marketing",
        "managers" : [
        ]
        "employees" : [
            {
                    "employee_id" : ObjectId("4f9643967f8b9a3f0a00005a"),
                    "from_date" : "1990-01-03",
                    "to_date" : "1990-01-15"
            }
        ]
}

W takim przypadku możesz po prostu uruchomić:

db.departments.find( { "employees.employee_id": ObjectId("some_id") } );


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Hak przed zapisem Mongoose uruchamia się, ale nie zapisuje dodatkowego pola (NIE przy użyciu modelu.update)

  2. mongodb sprawdza wyrażenie regularne na polach z jednej kolekcji do wszystkich pól w innej kolekcji

  3. MongoDB jak sprawdzić istnienie

  4. Konwertuj ciąg na MongoDB BsonDocument

  5. Wywołanie procedury składowanej w MongoDB za pośrednictwem C#