当前位置: 首页 > 知识库问答 >
问题:

查找并修改节点中的用法。js/MongoDb

呼延才俊
2023-03-14

我有一个集合,其中显示了用户最喜爱的电影列表。这是一个示例数据集。。。

{
        "_id" : ObjectId("545c08dcc4d2b8a0243dd4db"),
        "mail" : "mickey@mouse.com",
        "name" : "Mickey Mouse",
        "favorite_movies" : [
                {
                        "name" : "The Green Mile",
                        "Year" : "1992"
                },
                {
                        "name" : "Raging Bull",
                        "Year" : "1980"
                }
        ],
        "watched_movies" : [
                {
                        "name" : "The Green Mile",
                        "Year" : "1992"
                },
                {
                        "name" : "Jaws",
                        "Year" : "1976"
                }              
        ]
}

现在给定_id545c08dcc4d2b8a0243dd4db和一部电影

{
   "name" : "InterStellar",
   "Year" : "2014"
}

如果我需要把这个加到watched_movies,在Node.js/MongoDB,我相信唯一的方法是

  1. 使用“查找”查找文档

步骤#2基于此处的示例http://mongodb.github.io/node-mongodb-native/markdown-docs/insert.html

有更好的方法吗?具体来说,我可以避免步骤#1吗?

下面是我如何执行步骤#2。但我不得不执行步骤1以获取“watched\u movies”元素,然后将新电影附加到其中以构建电影列表

//try to update
collection.findAndModify(
{'_id':new BSON.ObjectID(id)}, //query
[['_id','asc']], //sort order
{$set: {"watched_movies": movielist}}, //replacement
{new: true}, //options
function(err, newObject){
   if(err) {
     console.warn(err.message);
   } else {
     console.log("Updated !! " + JSON.stringify(newObject));
     res.send(object);
   }
 });

我也愿意接受关于改进这种模式设计的建议。

共有1个答案

陶胤运
2023-03-14

您可以使用单个findAnyModify调用来执行此操作,方法是使用$推送$addToSet数组运算符将新电影直接添加到watched_movies数组:

var movie = {
   "name" : "InterStellar",
   "Year" : "2014"
};

collection.findAndModify(
  {'_id':new BSON.ObjectID(id)},
  [['_id','asc']],
  {$addToSet: {"watched_movies": movie}},
  {new: true},
  function(err, newObject){
     if(err) {
       console.warn(err.message);
     } else {
       console.log("Updated !! " + JSON.stringify(newObject));
       res.send(newObject);
     }
  });
 类似资料:
  • 对于 EZRMutableNode\ 类的实例来说,T value属性是可写并且线程安全的。我们可以通过点语法来修改一个可变节点的值,像这样: EZRMutableNode<NSNumber *> *node = [EZRMutableNode value:@55]; node.value = @82; 有的时候,你希望将一个可变节点重新修改为空值(EZREmpty.empty),由于泛型约束通

  • @Entity({name:'Report'})导出类Report扩展BaseEntity{ } 我想找到每天都在哪里的所有报告 使用SQL在PgAdmin我能够找到正确的数据使用下一个查询 或者 我们无法在中使用from it expected entityTarget 我们不能创建这样的查询,因为解析的在以下位置是不可见的 如果我想在表中查找数据,如何使用typeorm创建查询。一天等于五天

  • 本文向大家介绍JQuery查找DOM节点的方法,包括了JQuery查找DOM节点的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JQuery查找DOM节点的方法。分享给大家供大家参考。具体分析如下: DOM操作是JQuery最常见的用法,下面我们来将JQuery的DOM操作逐个剖析下。先来最简单的查找节点操作。 为了能全面地讲解DOM操作,首先需要构建一个网页。因为每一张网页都能用D

  • 有人能帮我吗?我正在使用$lookup在MongoDB中加入以获取日期在日期“X”和日期“Y”之间的所有订单,chef_id是“P”。“日期”部分有问题,没有提供日期的数据。但是当我在单个查找查询中使用它时,它可以正常工作并在日期之间提供数据。但是当我使用$lookup申请加入时,它不会提供数据。这是我的查询 谁能帮帮我。 我的收藏在这里“订购”收藏 这是我的用户收藏 }

  • 问题内容: 我想获取所有属于以下子项的标签: 我知道如何找到像这样的特定类的元素: 但是我不知道如何找到所有的孩子,而不是其他孩子。 就像我想选择: 问题答案: 尝试这个

  • 我试图将JTree节点可视化为JButton,我已经尝试使用JButton对象创建一个默认可变树节点,并将其添加到JTree中: 这些只显示带有黑色参数的错误行。 搜索网络我只发现我需要一个类,但没有一个结果显示如何使用它。 是否有一些教程可以让我找到一些示例来完成任务?