首页 文章

使用LINQ和MongoDb重新创建位置数组运算符

提问于
浏览
2

在MongoDB中,我有一个有效的更新查询:

db.posts.update(
  { 
    "_id" : ObjectId("..."),
    "Comments.Reference" : 123 
  },
  { 
    $push : 
    { 
      "Comments.$.Notes": { Text: "Some description here" } 
    }
  });

这将找到具有匹配Id的Post文档,并且对于具有该数组中匹配引用的Comments对象,它将新对象推入其中的Notes数组 .

但是,当我使用C#和驱动程序时,我想看看是否可以使用LINQ创建它 .

我倒下的地方是创建一个更新查询,转换为创建$ position操作符 .

IMongoUpdate update = Update<Post>.Push(t => t.Comments.First().Notes,
                                        BsonDocument.Parse("{ Text: \"Test\"}");

我把First()作为第一个猜测并让它进行编译,但是它会抛出一个错误,说它不能序列化它 .

是否可以重新创建它,或者我只需要恢复使用“Comments . $ . Notes”的字符串查询?

Edit: 只是要更新,这是有效的,但不提供类型安全:

IMongoUpdate update = Update.Push("Comments.$.Notes",
                                  BsonDocument.Parse("{ Text: \"Test\"}");

2 回答

相关问题