MongoDB 在对象中保留换行符
MongoDB preserving newlines inside objects
我是 MongoDB 的新手,正在按照教程习惯 shell 和基本的 MongoDB 命令。在教程中,讲师在 IDE 中键入了一个 insertOne 命令,然后将其粘贴到 Mongo shell 中。当他们这么做的时候,这个物体似乎自己坍塌了,摆脱了新的线条。当我这样做时,它似乎保留了我在 IDE.
中输入时的结构
这是我输入 insertOne 命令的方式,然后将其粘贴到 shell:
db.products.insertOne({
_id: 2,
name: 'Pencil',
price: 0.80,
stock: 12,
reviews: [
{
authorName: 'Harry',
rating: 5,
review: 'Really made me write!'
}
]
})
这是我查询集合中的所有项目时得出的结果。 'Pen' 一个,我只是在一行中输入所有内容,因为它很短。
文档的存储方式哪种更正常?当然,每个键值对都在一行上更具可读性,但我认为它占用更多 space 或以这种方式存储的东西
我是不是做错了什么?
我认为您混淆了文档在数据库中的存储方式以及 application/driver/shell/IDE 在屏幕上的显示方式。
MongoDB 使用 BSON 存储文档。显示的文档将存储为(十六进制表示法):
00000000: 9f00 0000 015f 6964 0000 0000 0000 0000 ....._id........
00000010: 4002 6e61 6d65 0007 0000 0050 656e 6369 @.name.....Penci
00000020: 6c00 0170 7269 6365 009a 9999 9999 99e9 l..price........
00000030: 3f01 7374 6f63 6b00 0000 0000 0000 2840 ?.stock.......(@
00000040: 0472 6576 6965 7773 0055 0000 0003 3000 .reviews.U....0.
00000050: 4d00 0000 0261 7574 686f 724e 616d 6500 M....authorName.
00000060: 0600 0000 4861 7272 7900 0172 6174 696e ....Harry..ratin
00000070: 6700 0000 0000 0000 1440 0272 6576 6965 g........@.revie
00000080: 7700 1600 0000 5265 616c 6c79 206d 6164 w.....Really mad
00000090: 6520 6d65 2077 7269 7465 2100 0000 00 e me write!....
那里根本没有存储换行符。
查询时,这些字节是通过线路发送的内容,实际显示给您的是客户端应用程序对这些字节的解释。
我是 MongoDB 的新手,正在按照教程习惯 shell 和基本的 MongoDB 命令。在教程中,讲师在 IDE 中键入了一个 insertOne 命令,然后将其粘贴到 Mongo shell 中。当他们这么做的时候,这个物体似乎自己坍塌了,摆脱了新的线条。当我这样做时,它似乎保留了我在 IDE.
中输入时的结构这是我输入 insertOne 命令的方式,然后将其粘贴到 shell:
db.products.insertOne({
_id: 2,
name: 'Pencil',
price: 0.80,
stock: 12,
reviews: [
{
authorName: 'Harry',
rating: 5,
review: 'Really made me write!'
}
]
})
这是我查询集合中的所有项目时得出的结果。 'Pen' 一个,我只是在一行中输入所有内容,因为它很短。
文档的存储方式哪种更正常?当然,每个键值对都在一行上更具可读性,但我认为它占用更多 space 或以这种方式存储的东西
我是不是做错了什么?
我认为您混淆了文档在数据库中的存储方式以及 application/driver/shell/IDE 在屏幕上的显示方式。
MongoDB 使用 BSON 存储文档。显示的文档将存储为(十六进制表示法):
00000000: 9f00 0000 015f 6964 0000 0000 0000 0000 ....._id........
00000010: 4002 6e61 6d65 0007 0000 0050 656e 6369 @.name.....Penci
00000020: 6c00 0170 7269 6365 009a 9999 9999 99e9 l..price........
00000030: 3f01 7374 6f63 6b00 0000 0000 0000 2840 ?.stock.......(@
00000040: 0472 6576 6965 7773 0055 0000 0003 3000 .reviews.U....0.
00000050: 4d00 0000 0261 7574 686f 724e 616d 6500 M....authorName.
00000060: 0600 0000 4861 7272 7900 0172 6174 696e ....Harry..ratin
00000070: 6700 0000 0000 0000 1440 0272 6576 6965 g........@.revie
00000080: 7700 1600 0000 5265 616c 6c79 206d 6164 w.....Really mad
00000090: 6520 6d65 2077 7269 7465 2100 0000 00 e me write!....
那里根本没有存储换行符。
查询时,这些字节是通过线路发送的内容,实际显示给您的是客户端应用程序对这些字节的解释。