0
我使用mongodb c#驱动程序,并尝试插入初始化数组时,该字段为空,并推动时,数组已存在的地址(在这一阶段,我只是假设如果地址字段不为空,则存在数组)。mongodb c#推或插入如果字段为空
我正在使用下面的方法,它返回的错误肯定的地址值为空,因此保持覆盖自己与一个新的数组。
任何人都可以指向正确的方式来查询地址是否存在空值?
public virtual async Task<UpdateResult> AddEntryToArrayAsync<X>(string address, string id, X el)
{
var isNullQuery = Builders<BsonDocument>.Filter.Eq(address, BsonNull.Value) & IdFilter(id);
var isNullCount = await Collection.CountAsync(isNullQuery);
if (isNullCount > 0)
{
var insert = Builders<BsonDocument>.Update.Set(address, new List<X>() { el });
return await Collection.UpdateOneAsync(IdFilter(id), insert);
}
var update = Builders<BsonDocument>.Update.Push(address, el);
return await Collection.UpdateOneAsync(IdFilter(id), update);
}
protected static FilterDefinition<BsonDocument> IdFilter(string id)
{
return Builders<BsonDocument>.Filter.Eq("_id", id);
}
我确信所有其他工作正常,因为每次使用新的init都会覆盖正确的地址。阵列