在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 回答
此功能已添加:
https://jira.mongodb.org/browse/CSHARP-1046
要直接从jira案例中复制:
会屈服
不幸的是,它目前似乎不受支持:(
https://jira.mongodb.org/browse/CSHARP-531