sql >> データベース >  >> NoSQL >> MongoDB

配列値の一致条件を書く方法は?

    OK、2つの方法でそれを行うことができます:

    あなたがこれを持っているように:

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

    Pythonコードを使用して、文字列のリストをObjectIdのリストに変換する必要があります:

    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 }}]}}])
    

    または、私が好まない他の方法では、useridのn個の値と比較して、コードでほんの少しだけ変換する方が簡単です。 DB内のすべてのドキュメントのフィールドですが、DBクエリを使用して実行する場合に備えて:

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

    注: bsonパッケージがない場合は、pip install bsonのようにインストールする必要があります。




    1. Node.jsで同期MongoDBクエリを作成する正しい方法は何ですか?

    2. MongoDB $ sqrt

    3. laravel-mongodbを使用したoauth2-server-laravelの設定

    4. 本番環境でLaravelEchoサーバーをホストするためのApacheリバースプロキシの設定