MongoDB - Mongoose:文档结构/体系结构(MongoDB - Mongoose: document structure/architecture)
我有一个相对简单的问题,然而,我一直被卡住,一遍又一遍。 我认为这是我第四次尝试重新构建我的文档以尝试获得理想的结果。
我想用以下结构在猫鼬中创建一个数据库:
用户有许多组 , 帖子和评论 。 组 , 帖子和评论都属于用户 。 帖子可以属于很多组 ,或者没有。 评论属于某个帖子 。
这是我到目前为止:
UserSchema
var userSchema = mongoose.Schema({ local : { email : String, password : String, username : String, created: {type:Date, default: Date.now} } });
PostSchema
var PostSchema = new Schema({ url: String, highlighted: String, comment: String, image: String, timeStamp: String, description: String, title: String, created: {type:Date, default: Date.now}, private: Boolean, favorite: Boolean, readlater: Boolean, postedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, comments: [{ text: String, postedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' } }], groups: [{ name: String, postedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' } }] });
groupSchema
var GroupSchema = Schema({ name : String, created: {type:Date, default: Date.now}, postedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' } });
虽然我可能在这个假设上是错误的,但我认为我已经向用户发表了评论,并且发表了评论,以仅仅以它应该的方式发布关系。 如果我错了,请纠正我。 我现在面临的主要问题是与我的小组发布关系。 目前,根本没有任何关系。 据我所知,就好像这个小组属于这个职位,而不是相反。 我能想到构建团队的唯一方式就是这样:
var GroupSchema = Schema({ name : String, created: {type:Date, default: Date.now}, postedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, posts: [{ title: String, Url: String, comments: [{ text: String }] etc.... }] });
我在上面的结构中可以看到的唯一问题是该帖子将被要求成为一个组的一部分,我希望这个组成为可选组。 所以据我所知,这也行不通。
如果有什么建议可以提供关于这应该如何结构,这将帮助我很大。
先谢谢你。
I have a relatively simple question, however, I keep getting stuck, over and over again. I think this is the fourth time I have tried to re-structure my documents to try and get the desired result.
I want to create a database in mongoose with the following structure:
A User has many groups, posts and comments. The groups, posts and comments all belong to a User. A post can belong to many groups, or none. And a comment belongs to a certain post.
Here is what I have so far:
UserSchema
var userSchema = mongoose.Schema({ local : { email : String, password : String, username : String, created: {type:Date, default: Date.now} } });
PostSchema
var PostSchema = new Schema({ url: String, highlighted: String, comment: String, image: String, timeStamp: String, description: String, title: String, created: {type:Date, default: Date.now}, private: Boolean, favorite: Boolean, readlater: Boolean, postedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, comments: [{ text: String, postedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' } }], groups: [{ name: String, postedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' } }] });
groupSchema
var GroupSchema = Schema({ name : String, created: {type:Date, default: Date.now}, postedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' } });
Although I may be wrong on this assumption, I think I have the post to user and comment to post relationship just the way it should be. Please correct me if I am wrong. The main problem I am having right now is with my group to post relationship. Currently, there is no relationship at all. As far as I can, it is almost as if the group belongs to the post, instead of the other way around. The only other way I can think to structure the group would be like so:
var GroupSchema = Schema({ name : String, created: {type:Date, default: Date.now}, postedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, posts: [{ title: String, Url: String, comments: [{ text: String }] etc.... }] });
The only problem I can see in the structure above is that the post will be required to be part of a group, which I want to be optional. So as far as I can tell, this will not work either.
If there is any advice you can provide in regards to how this should be structured, it would help me greatly.
Thank you in advance.
原文:https://stackoverflow.com/questions/33932925
最满意答案
Try this...
$('.demoClass').find('option[value="1"]').remove();
This utilizes the Attribute Equals Selector
相关问答
更多-
尝试这个... $('.demoClass').find('option[value="1"]').remove(); 这利用了属性等于选择器 Try this... $('.demoClass').find('option[value="1"]').remove(); This utilizes the Attribute Equals Selector
-
jQuery:选择属性大于值的所有元素(jQuery: Selecting all elements where attribute is greater than a value)[2021-12-16]
您可以使用.filter()的函数重载来执行此操作,如下所示: .filter(function() { return $(this).attr("attrName") > "someValue"; }) You can do this using the function overload of .filter(), like this: .filter(function() { return $(this).attr("attrName") > "someValue"; }) -
这是一个最简单的解决方案,一个清晰的选择器: function select_option(i) { return $('span#span_id select option[value="' + i + '"]').html(); } Here's the simplest solution with a clear selector: function select_option(i) { return $('span#span_id select option[value="' + i + ...
-
jQuery按名称选择元素(jQuery selecting elements by name)[2023-07-22]
另外,没有“名称”属性。 改用$(..).attr('name') 。 // Pozdrawiam;)/ [“问候”,in polish];) also, there's no "name" property. Use $(..).attr('name') instead. // Pozdrawiam ;) / ["greetings", in polish] ;) -
几点观察 需要使用类adminBox监听输入,而不是所有复选框 使用checked属性查看是否已选中 adminBox是一个不是名字的类 使用.val()来设置select元素的值 它应该是 $("input.adminBox").change(function () { if (this.checked){ $("#role").val('admin'); } else { $("#role").val('sei'); } }); 演示: 小提琴 ...
-
当您调用.html()获取表格单元格的内容时,您将获得所有前导和尾随空白以及您感兴趣的文本; 另外,你应该使用.text()而不是.html()以防万一。 所以,只需使用replace删除空格: var s = $('#time').text().replace(/\s/g, '').split(':'); 演示: http : //jsfiddle.net/ambiguous/xmgAu/ When you call .html() to get the table cell's content you ...
-
更改一个选择选项会改变许多其他选项(JavaScript,JQuery)(Changing one select option changes many others (JavaScript, JQuery))[2022-04-17]
$('select').change(function(){ var v = $(this).val(); $('select option[value="'+$(this).data('old-val')+'"]').prop('disabled', false); $(this).data('old-val',v); if(v != "0"){ $('select option[value="'+v+'"]').not(this).prop('disabl ... -
JQUery:在动态生成的选择选项列表中选择一个值(JQUery: selecting a value in a dynamically generated list of select options)[2022-05-27]
从注释/聊天中得到的澄清结果表明,加载器和setter函数是异步的,但它们是顺序调用的,因此当调用setter时,可能不会调用选项.... 您需要确保在加载器完成加载选项值后调用setter ...您可以使用回调机制来执行此操作。 阅读更多: 在这个答案中 From the clarification got from the comments/chats it turns out that loader and setter functions are async but they are called ... -
使用jQuery在FireFox中从隐藏框中选择选项有问题(Having Issue on Selecting Option From Hidden Box in FireFox With jQuery)[2021-09-20]
您的HTML是错误的,因为HTML5不允许按钮内的交互式元素(例如选择)。您无法在按钮内添加选择。 在这里为你修好: 这是工作演示 HTML: Local
International
你快到了。 请给: var a = $(".select1 option:selected").attr("value"); 或者给这个: var a = $(".select1").val(); 您需要获取相关文章
更多- MongoDB的体系结构_深入浅出MongoDB(三)
- 快速了解MongoDB【基本概念与体系结构】
- MongoDB: The Definitive Guide
- mongodb删除文档操作-使用shell和java操作mongodb文档
- mongodb添加集合文档操作-使用shell和java操作mongodb文档
- 对比下HBase, Memcached, MongoDB, Redis和Solr
- Solr从Mongodb索引数据(上) 借助mongodb-jdbc和配置JdbcDataSource
- solr mongoDB 对比
- Mongodb与spring集成(2)------实体映射
- MongoDB集成Hadoop进行统计计算
最新问答
更多- python的访问器方法有哪些
- 使用Zend Framework 2中的JOIN sql检索数据(Retrieve data using JOIN sql in Zend Framework 2)
- 透明度错误IE11(Transparency bug IE11)
- linux的基本操作命令。。。
- 响应navi重叠h1和nav上的h1链接不起作用(Responsive navi overlaps h1 and navi links on h1 isn't working)
- 在C中读取文件:“r”和“a +”标志的不同行为(Reading a File in C: different behavior for “r” and “a+” flags)
- NFC提供什么样的带宽?(What Kind of Bandwidth does NFC Provide?)
元素上的盒子阴影行为(box-shadow behaviour on elements) - Laravel检查是否存在记录(Laravel Checking If a Record Exists)
- 设置base64图像的大小javascript - angularjs(set size of a base64 image javascript - angularjs)
- 想学Linux 运维 深圳有哪个培训机构好一点
- 为什么有时不需要在lambda中捕获一个常量变量?(Why is a const variable sometimes not required to be captured in a lambda?)
- 在Framework 3.5中使用服务器标签<%=%>设置Visible属性(Set Visible property with server tag <%= %> in Framework 3.5)
- AdoNetAppender中的log4net连接类型无效(log4net connection type invalid in AdoNetAppender)
- 错误:发送后无法设置标题。(Error: Can't set headers after they are sent. authentication system)
- 等待EC2实例重启(Wait for an EC2 instance to reboot)
- 如何在红宝石中使用正则表达式?(How to do this in regex in ruby?)
- 使用鼠标在OpenGL GLUT中绘制多边形(Draw a polygon in OpenGL GLUT with mouse)
- 江民杀毒软件的KSysnon.sys模块是什么东西?
- 处理器在传递到add_xpath()或add_value()时调用了什么顺序?(What order are processors called when passed into add_xpath() or add_value()?)
- sp_updatestats是否导致SQL Server 2005中无法访问表?(Does sp_updatestats cause tables to be inaccessible in SQL Server 2005?)
- 如何创建一个可以与持续运行的服务交互的CLI,类似于MySQL的shell?(How to create a CLI that can interact with a continuously running service, similar to MySQL's shell?)
- AESGCM解密失败的MAC(AESGCM decryption failing with MAC)
- SQL查询,其中字段不包含$ x(SQL Query Where Field DOES NOT Contain $x)
- PerSession与PerCall(PerSession vs. PerCall)
- C#:有两个构造函数的对象:如何限制哪些属性设置在一起?(C#: Object having two constructors: how to limit which properties are set together?)
- 平衡一个精灵(Balancing a sprite)
- n2cms Asp.net在“文件”菜单上给出错误(文件管理器)(n2cms Asp.net give error on Files menu (File Manager))
- Zurb Foundation 4 - 嵌套网格对齐问题(Zurb Foundation 4 - Nested grid alignment issues)
- 湖北京山哪里有修平板计算机的