【问题标题】:How to properly insert documents into a collection using the MongoDB Web Shell如何使用 MongoDB Web Shell 将文档正确插入到集合中
【发布时间】:2019-11-23 23:54:12
【问题描述】:

我在从 mongodb 站点将文档集合插入 MongoDB Web Shell 时遇到了一些问题。

提供的链接:https://docs.mongodb.com/manual/tutorial/insert-documents/

这是一个简单的例子:

db.FirstExample.insertMany ([ 

    { "Date": "2001-01-01", "Description": "Airfare", "Amount": "500.34" },
    { "Date": "2001-01-01", "Description": "Hotel", "Amount": "200" },
    { "Date": "2001-01-01", "Description": "Taxi Fare", "Amount": "100.00" },
    { "Date": "2001-01-01", "Description": "Long Distance Phone Charges", "Amount": "57.89" },
    { "Date": "2001-01-01", "Description": "Food",  "Amount": "82.19" },
    { "Date": "2001-01-02", "Description": "Food",  "Amount": "17.89" },
    { "Date": "2001-01-02", "Description": "Personal Items", "Amount": "32.54" },
    { "Date": "2001-01-03", "Description": "Taxi Fare", "Amount": "75.00" },
    { "Date": "2001-01-03", "Description": "Food",  "Amount": "36.45" },
    { "Date": "2001-01-03", "Description": "New Suit", "Amount": "750.00" } 
]);

当我将此集合运行到 MongoDB Web Shell 中时,它运行良好。现在问题来了,我想再包含一个名为“ExpenseItem”的元素。当我输入新代码sn-p时,我得到一个错误。

db.FirstExample.insertMany ([ 

    { "ExpenseItem:"

    { "Date": "2001-01-01", "Description": "Airfare", "Amount": "500.34" },
    { "Date": "2001-01-01", "Description": "Hotel", "Amount": "200" },
    { "Date": "2001-01-01", "Description": "Taxi Fare", "Amount": "100.00" },
    { "Date": "2001-01-01", "Description": "Long Distance Phone Charges", "Amount": "57.89" },
    { "Date": "2001-01-01", "Description": "Food",  "Amount": "82.19" },
    { "Date": "2001-01-02", "Description": "Food",  "Amount": "17.89" },
    { "Date": "2001-01-02", "Description": "Personal Items", "Amount": "32.54" },
    { "Date": "2001-01-03", "Description": "Taxi Fare", "Amount": "75.00" },
    { "Date": "2001-01-03", "Description": "Food",  "Amount": "36.45" },
    { "Date": "2001-01-03", "Description": "New Suit", "Amount": "750.00" } 

    } 
]);

错误是这样的: E QUERY [js] 未捕获的异常:SyntaxError: missing : after property id :

为什么我会收到错误消息? “:”不是已经在“ExpsenseItem”旁边了吗?这段代码 sn-p 没有在 MongoDb Web Shell 中运行,我遗漏了哪些关键细节?

【问题讨论】:

  • 无效的 JSON。
  • 您想将ExpenseItem 添加到您要插入的每个文档中,还是希望单个ExpenseItem 成为包含所有日期/描述/金额子文档的数组?
  • 单个 ExpenseItem 是一个包含所有日期/描述/金额子文档的数组。

标签: mongodb


【解决方案1】:

将它们的键 ExpenseItem 与文档的其余部分分开的冒号位于引号内,因此被视为键的一部分。要按原样嵌套文档,您需要将它们放在数组中。因此:

{ "ExpenseItem" : [

    { "Date": "2001-01-01", "Description": "Airfare", "Amount": "500.34" },
    { "Date": "2001-01-01", "Description": "Hotel", "Amount": "200" },
    { "Date": "2001-01-01", "Description": "Taxi Fare", "Amount": "100.00" },
    { "Date": "2001-01-01", "Description": "Long Distance Phone Charges", "Amount": "57.89" },
    { "Date": "2001-01-01", "Description": "Food",  "Amount": "82.19" },
    { "Date": "2001-01-02", "Description": "Food",  "Amount": "17.89" },
    { "Date": "2001-01-02", "Description": "Personal Items", "Amount": "32.54" },
    { "Date": "2001-01-03", "Description": "Taxi Fare", "Amount": "75.00" },
    { "Date": "2001-01-03", "Description": "Food",  "Amount": "36.45" },
    { "Date": "2001-01-03", "Description": "New Suit", "Amount": "750.00" }
]
}

此文档将插入,但它现在是单个文档。

【讨论】:

    猜你喜欢
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 2014-11-16
    相关资源
    最近更新 更多