当前位置: 首页 > 面试题库 >

Mongoose嵌入的文档/ DocumentsArrays ID

邹山
2023-03-14
问题内容

在Mongoose文档中的以下地址:http :
//mongoosejs.com/docs/embedded-
documents.html

有一条声明:

DocumentArrays具有一个特殊的方法ID,该ID通过其_id属性(每个嵌入式文档获取一个)来过滤嵌入式文档:

考虑以下代码段:

 post.comments.id(my_id).remove();
  post.save(function (err) {
    // embedded comment with id `my_id` removed!
  });

我的问题是:

文档是否正确?如果是这样,那么我如何找出“ my_id”是什么(在示例中),以便首先执行 “ .id(my_id)”

如果文档不正确,可以安全地将索引用作文档数组中的ID,或者我应该手动生成唯一的ID(根据所提到的内容)。


问题答案:

而不是对像这样的json对象执行push()(猫鼬文档建议的方式):

// create a comment
post.comments.push({ title: 'My comment' });

您应该创建一个嵌入式对象的实际实例push(),而不是实际实例。然后,您可以直接从中获取_id字段,因为猫鼬在实例化对象时对其进行设置。这是一个完整的示例:

var mongoose = require('mongoose')
var Schema = mongoose.Schema
var ObjectId = Schema.ObjectId

mongoose.connect('mongodb://localhost/testjs');

var Comment = new Schema({
    title     : String
  , body      : String
  , date      : Date
});

var BlogPost = new Schema({
    author    : ObjectId
  , title     : String
  , body      : String
  , date      : Date
  , comments  : [Comment]
  , meta      : {
        votes : Number
      , favs  : Number
    }
});

mongoose.model('Comment', Comment);
mongoose.model('BlogPost', BlogPost);

var BlogPost = mongoose.model('BlogPost');
var CommentModel = mongoose.model('Comment')


var post = new BlogPost();

// create a comment
var mycomment = new CommentModel();
mycomment.title = "blah"
console.log(mycomment._id) // <<<< This is what you're looking for

post.comments.push(mycomment);

post.save(function (err) {
  if (!err) console.log('Success!');
})


 类似资料:
  • 我用Mongoose定义了以下模式: 我尝试执行以下查询: 查询不响应,并且从不进入回调函数。这很奇怪,因为这种类型的查询(搜索两个字符串字段)适用于我定义的另一个模式,但不适用于这个模式。另一种模式更简单,不需要任何嵌入文档。 [更新] 我试过你的建议,但不行。我认为只有两个选择: 1.我发布的模式有问题。 多谢!

  • 我很好奇在我的主模式中使用子文档和更深层文档的利弊: 或者 我目前到处都在使用subdocs,但我主要想知道我可能遇到的性能或查询问题。

  • 有人知道谷歌电子表格嵌入URL参数是否有任何官方文档吗? 也就是说,给定一个来自Google表单的嵌入URL,如下所示:https://docs.google.com/a/aicr.org/spreadsheet/pub?key=0AhExuVBhVYT1dGxxejBmUHAzYUhGb25veTRkdW1YekE 争论是做什么的? 还有哪些参数是默认情况下不包括的? 经过大量的挖掘和寻找,我发

  • Mongoose 是在 Node.js 异步环境下对 MongoDB 进行便捷操作的对象模型工具。 让我们面对这样的困境,编写MongoDB验证,转换和业务逻辑是非常麻烦的。所以我们发明了Mongoose。 Mongoose为模型提供了一种直接的,基于scheme结构去定义你的数据模型。它内置数据验证, 查询构建,业务逻辑钩子等,开箱即用。

  • 问题内容: 我使用Mongoose.js,无法解决3级层次结构文档的问题。 有2种方法可以做到。 首先 -没有裁判。 我需要出示C记录。仅知道_id的C,如何填充/找到它? 我曾尝试使用: 但是我不知道如何从returnet得到一个对象,我只需要c对象。 其次,如果使用裁判: 如何填充所有B,C记录以获取层次结构? 我试图使用这样的东西: 但是它将为single_c.title返回undefine

  • 您可以在Perl模块和脚本中嵌入Pod(Plain Old Text)文档。 以下是在Perl代码中使用嵌入式文档的规则 - 使用空行开始您的文档,在开头使用a = head1命令,然后使用= cut结束它 Perl将忽略您在代码中输入的Pod文本。 以下是在Perl代码中使用嵌入式文档的简单示例 - #!/usr/bin/perl print "Hello, World\n"; =head1 H