MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm thế nào để viết điều kiện khớp cho các giá trị mảng?

Được, bạn có thể làm theo hai cách:

Như bạn đã thấy:

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

Bạn cần chuyển đổi danh sách các chuỗi của mình thành danh sách ObjectId bằng cách sử dụng mã python:

from bson.objectid import ObjectId


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


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

Nó sẽ giống như sau:[ObjectId('5d76b2c847c8d3000184a090'),ObjectId('5d7abb7a97a90b0001326010')]

sau đó bằng cách sử dụng danh sách mới my_list , bạn có thể thực hiện truy vấn như sau:

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

Hoặc theo cách khác mà tôi không thích, vì chỉ chuyển đổi một vài mã trong mã sẽ dễ dàng hơn so với n num giá trị cho userid trên tất cả các tài liệu trong DB, nhưng chỉ trong trường hợp bạn muốn nó được thực hiện bằng cách sử dụng truy vấn DB:

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

Lưu ý: Trong trường hợp nếu bạn không có gói bson, thì bạn cần cài đặt nó bằng cách thực hiện hành động như pip install bson




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongooseError - Hoạt động `users.findOne ()` đệm hết thời gian chờ sau 10000ms

  2. Cách truy vấn / cập nhật tài liệu phụ trong MongoDB bằng trình điều khiển C #

  3. MongoDB $ sqrt

  4. Chạy nhiều truy vấn trong mongo`

  5. Cập nhật nhiều tài liệu trong một bộ sưu tập bằng cách sử dụng trường hợp chuyển đổi