比较同一集合中的两个字段

时间:2020-10-06 11:22:26

标签: c# mongodb

我在Mongo有一个收藏集。

我有两个字段:校验和和校验和N-4。

我已经做了一个这样的过滤器:

var filter = Builders<BsonDocument>.Filter.Eq("metadata.origin", sOrigin.ToString())
               & Builders<BsonDocument>.Filter.Eq("metadata.transfered", BsonNull.Value)
              & Builders<BsonDocument>.Filter.Eq("metadata.duplicate", BsonNull.Value)
             & Builders<BsonDocument>.Filter.Eq("metadata.malformed", BsonNull.Value);

我只想拥有校验和和校验和N-4字段不同的文档。

例如:

Cheksum : 2222222
checksumN-4 : 2222222

我想要这张记录

Checksum : 8888888
ChecksumN-4 : 8889998

我不想要这个记录

如何在c#中做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用以下表达式创建BsonDocumentFilterDefinition

 var builder = Builders<BsonDocument>.Filter;
 var filter = builder.Eq("metadata.origin", sOrigin.ToString())
              & builder.Eq("metadata.transfered", BsonNull.Value)
              & builder.Eq("metadata.duplicate", BsonNull.Value)
              & builder.Eq("metadata.malformed", BsonNull.Value)
              & new BsonDocumentFilterDefinition<BsonDocument>(new BsonDocument(
                    "$expr", new BsonDocument(
                        "$eq", new BsonArray
                        {
                            "$checksumN-4", "$checksum"
                        })));