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

Как да напиша условие за съвпадение за стойности на масив?

Добре, можете да го направите по два начина:

Тъй като имате това:

uid = Objectid("5d518caed55bc00001d235c1")
disuid = ['5d76b2c847c8d3000184a090', '5d7abb7a97a90b0001326010']

Трябва да преобразувате вашия списък с низове в списък с ObjectId, като използвате код на python:

from bson.objectid import ObjectId


disuid = ['5d76b2c847c8d3000184a090', '5d7abb7a97a90b0001326010']
my_list = []


for i in disuid:
    my_list.append(ObjectId(i))

Ще изглежда така:[ObjectId('5d76b2c847c8d3000184a090'),ObjectId('5d7abb7a97a90b0001326010')]

след това с помощта на нов списък my_list , можете да направите заявка по този начин:

user_posts.aggregate([{"$match" : { "$or" : [{ "userid" : uid }, { "userid" : { "$in" : my_list }}]}}])

Или по друг начин, който не бих предпочел, тъй като конвертирането само на няколко в кода е по-лесно в сравнение с n на брой стойности за userid поле върху всички документи в DB, ​​но за всеки случай, ако искате да се направи с помощта на DB query:

user_posts.aggregate([{$addFields : {userStrings : {$toString: '$userid'}}},{"$match" : { "$or" : [{ "userid" : uid }, { "userStrings" : { "$in" : disuid }}]}}])

Забележка: В случай, че нямате bson пакет, тогава трябва да го инсталирате, като направите нещо като pip install bson




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Заявка за ограничение/отместване на мангуста и броене

  2. Дублиране на колекция mongodb

  3. Как да решите коя NoSQL технология да използвате?

  4. Агрегирайте и актуализирайте MongoDB

  5. Предимства на MongoDB | Недостатъци на MongoDB