Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 复杂的MongoDB查询我可以';在文档中找不到清晰的示例_Javascript_Node.js_Database_Mongodb_Aggregate - Fatal编程技术网

Javascript 复杂的MongoDB查询我可以';在文档中找不到清晰的示例

Javascript 复杂的MongoDB查询我可以';在文档中找不到清晰的示例,javascript,node.js,database,mongodb,aggregate,Javascript,Node.js,Database,Mongodb,Aggregate,我的目标是: 我在服务器端有一个对象this.data。 并让tobeedite存储在数据库中的文档(对象)的名称。 为了简单起见,我将仅提及对象的几个属性: this.data = { totalMCQs:2, quizTitle:'Hello World', totalChoices:2, mcq1:'What is meant by HTML?', choiceA1:'blah blah', choiceB1:'Hyper text markup language'

我的目标是: 我在服务器端有一个对象
this.data
。 并让
tobeedite
存储在数据库中的文档(对象)的名称。 为了简单起见,我将仅提及对象的几个属性:

this.data = {  
totalMCQs:2,  
quizTitle:'Hello World',  
totalChoices:2,  
mcq1:'What is meant by HTML?',  
choiceA1:'blah blah',  
choiceB1:'Hyper text markup language',  
ans1:'B',  
mcq2:'What is meant by CSS?',  
choiceA2:'blah blah',  
choiceB2:'Cascading style sheets',  
ans1:'B'  
}

toBeEdited = {  
_id:3000,  
_anotherId:2000,  
totalMCQs:1,  
quizTitle:'Noob programmer',  
totalChoices:3,  
mcq1:'What is meant by JS',  
choiceA1:'blah blah',  
choiceB1:'blah blah',  
choiceC1:'javascript',  
ans1:'C'  
}  
应用查询
后,应更新tobeedite
,以便:

toBeEdited = {  
_id:3000,  
_anotherId:2000,  
totalMCQs:2,  
quizTitle:'Hello World',  
totalChoices:2,  
mcq1:'What is meant by HTML?',  
choiceA1:'blah blah',  
choiceB1:'Hyper text markup language',  
ans1:'B',  
mcq2:'What is meant by CSS?',  
choiceA2:'blah blah',  
choiceB2:'Cascading style sheets',  
ans1:'B'  
}  
我需要这样一个mongodb查询,它将覆盖
toBeEdited
doc中相同属性的值,并向
toBeEdited
doc添加其他属性,而不对
toBeEdited
doc中的ID等属性执行任何操作

注: 也可能发生这样的情况,
this.data
的MCQ/选择较少,而
tobeedite
的MCQ/选择较多。在这种情况下,查询应该覆盖
toBeEdited
doc中相同属性的值,并删除
toBeEdited
doc中的额外属性,而不对
toBeEdited
doc中的某些属性(如ID)执行任何操作

我已经解决了这个问题,但是使用了多个查询,我需要一个查询来完成

当前代码:


谢谢

如果仍然有问题,请使用$set,将代码缩减为2个字段(一个字段要更改,另一个字段要保持不变),并删除所有其他字段。