복붙노트

[MONGODB] MongoDB를 사용하는 필터는 목록과 일치하는

MONGODB

MongoDB를 사용하는 필터는 목록과 일치하는

나는 BsonDocument의 목록을 가지고 :

   var list = db.GetCollection<BsonDocument>(collectionName); 
   var myIds = list.Find(_ => true)
    .Project(Builders<BsonDocument>.Projection.Include("_id"))
    .ToList();

포함한다 :

그리고 다음과 같이 조회 할 :

var deleted =list.DeleteMany(Builders<MessageExchange>.Filter.In("_id", myIds));

나는 또한 다음을 시도했다 :

var filter = new BsonDocument("_id", new BsonDocument("$in", new BsonArray(myIds)));
var deleted = list.DeleteMany(filter);

반환 속성 DeletedCount = 0 필터에 대한 잘못된 것으로 보이는 누군가 지점 수 있을까요?

해결법

  1. ==============================

    1.이 같은 BsonDocument에서 _id를 추출해야합니다 :

    이 같은 BsonDocument에서 _id를 추출해야합니다 :

    var extractedIds = myIds.Select(x => x["_id"].ToString()).ToList();
    

    이는 후에는 필터에 사용할 수 있습니다.

    list.DeleteMany(Builders<MessageExchange>.Filter.In("_id", extractedIds));
    

    확인하는 것을 MessageExchange 클래스의 필터 일치의 _id 부분

    그렇게하는 또 다른 방법은 그것에게 강력한 형식화를 만드는 것입니다 :

    list.DeleteMany(Builders<MessageExchange>.Filter.In(x => x.Id, extractedIds));
    
  2. ==============================

    2.뿐만 아니라이 작품은 (Skami의 답변에 따라) :

    뿐만 아니라이 작품은 (Skami의 답변에 따라) :

    var filter = new BsonDocument("_id", new BsonDocument("$in", new BsonArray(extractedIds)));
    list.DeleteMany(filter);
    

    그러므로 MessageExchange 클래스에 연결되어 있지 않습니다.

  3. from https://stackoverflow.com/questions/55417118/mongodb-use-filter-to-match-a-list by cc-by-sa and MIT license