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

Mongodb $in срещу поле от обекти от масив вместо обекти от масив

Трябва да извлечете полетата „локация“ от вашия входен масив и да ги подадете към $in :

var locs = arr.map(function(x) { return x.location } );
db.collection.find({ "fieldx": { "$in": locs } })

За справка тук ще пренапиша въпроса ви за вас:

Имам колекция, която съдържа документи като този:

{ "fieldx": "NY" }
{ "fieldx": "LA" }
{ "fieldx": "SF" }

Това, което имам, е входен масив, който е дефиниран така:

var arr = [
    { "name": "foo", "location": "NY"},
    { "name": "bar", "location": "LA"},
    { "name": "foobar", "location": "NZ"}
];

Сега искам да напиша заявка, за да намеря всички документи, които съответстват на полето „Местоположение“ в масива, който имам за въвеждане.

Как да направя това?

Опитах:

db.collection.find({ "fieldx": { "$in": arr } })

Но това не съвпада.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Ограничението за размер на един документ на MongoDB е 16MB

  2. Асинхронният мидълуер Mongoose pre.save() не работи според очакванията

  3. mongodb актуализира последния елемент на масива

  4. Създаване на mongoose модели с машинопис - поддокументи

  5. актуализиране на n-тия документ в документ с вложен масив в mongodb