Как найти идентификатор из нескольких коллекций в mongoDB - PullRequest
0 голосов
/ 10 июля 2020

Я новичок в mongoDB и мне нужна помощь в этом. Вот пример сценария. У меня есть 3 коллекции: Dogs, Cats и PetsInventory, а также данные о домашних животных, которые мне нужно вставить в коллекцию PetsInventory.

Коллекция Dogs:

{
  "total": 3,
  "breeds": [
      {
         "_id": d1,
         "name": "labrador"
      },
      {
         "_id": d2,
         "name": "dalmatian"
      },
      {
         "_id": d3,
         "name": "husky"
      },
   ]
}

Коллекция кошек:

{
  "total": 3,
  "breeds": [
      {
         "_id": c1,
         "name": "persian"
      },
      {
         "_id": c2,
         "name": "ragdoll"
      },
      {
         "_id": c3,
         "name": "siamese"
      },
   ]
}

Коллекция PetsInventory:

{
   "total": 0,
   "items": []
}

Данные питомца для вставки:

{
   "_id": p1
   "petOriginId" : c1
   "description": "male labrador"
}

Мне нужно сохранить данные питомца в коллекции PetsInventory, но перед этим мне нужно выяснить, значение поля petOriginId существует либо в коллекции Dogs, либо в коллекции Cats, в противном случае оно не будет вставлено. Заранее спасибо!

1 Ответ

0 голосов
/ 11 июля 2020

Ваш скрипт logi c должен выглядеть примерно так:

var petDataToBeInserted = {
   "_id": "p1"
   "petOriginId" : "c1"
   "description": "male labrador"
};
var foundDog = db.dogsCollection.findOne({"breeds._id": petDataToBeInserted["petOriginId"]}, {"_id": 1});
var foundCat = db.catsCollection.findOne({"breeds._id": petDataToBeInserted["petOriginId"]}, {"_id": 1});
if (foundDog != null || foundDog != null) {
    db.petsInventoryCollection.insertOne(petDataToBeInserted)  // Insert the record to based on your requirement
}
...