【问题标题】:Update or replace an embedded document in MongoDB collection更新或替换 MongoDB 集合中的嵌入文档
【发布时间】:2014-06-02 23:42:42
【问题描述】:

我有以下数据结构:

db.objects
{
    "_id" : 1,
    "name" : "object name",
    "type" : "rectangle",
    "area" : {
        "position_x1" : 0,
        "position_y1" : 0,
        "position_x2" : 0,
        "position_y2" : 0
    },
    "dimension" : {
        "width" : 0,
        "height" : 0
    }
}

我想用"_id" = 1 分别替换/更新对象集合中的文档"area""dimension"

[?] 请告诉我如何使用 MongoDB C# 驱动程序实现。

【问题讨论】:

    标签: c# mongodb document insert-update


    【解决方案1】:

    这是$set 运算符的一个非常简单的用法。所以本质上更新形式是:

    db.objects.update(
        { "_id": 1 },
        {
            "$set": {
                "area": { /* all of your object properties */ },
                "dimension": { /* all of your object properties */ }
            }
        }
    )
    

    或者你分开做:

    db.objects.update(
        { "_id": 1 },
        {
            "$set": {
                "area.position_x1": 1,
                "area.position_y1": 1,
                "dimension.width": 1 
            }
        }
    )
    

    根据您的实际需要。

    或者作为带有 Builder 的 C# 类型代码:

    var query = Query.EQ("_id",1);
    
    var update = Update.Set("area.position_x1", 1)
        .Set("area.position_y1", 1)
        .Set("dimension.width", 1);
    
    MongoCollection<Class>.update(query, update);
    

    【讨论】:

    • Neil 你能告诉我如何使用 MongoDB C# 驱动程序来实现这一点吗?
    • @theGeekster 实现应该没有太大区别,您只是创建 BSON 文档以匹配 JSON 形式。不幸的是,我在公共假期已经到了凌晨 2 点,所以这将是我今晚的结束。试一试吧,这并不难,而且是一种学习体验。
    • @theGeekster 所以当我找到时间回到这个问题时,一个例子存在
    • 感谢尼尔的回复。虽然我自己也发现它: var update = Update.AddToSet("area.x1", X1).AddToSet("area.X2", X2).AddToSet("dimension.width", width).AddToSet("dimension .height", 高度);
    猜你喜欢
    • 1970-01-01
    • 2012-03-01
    • 2021-10-07
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 2011-12-04
    相关资源
    最近更新 更多