Tôi có một bộ sưu tập:Làm thế nào thêm tài liệu mới trong phức tạp Collection-Object
{
"_id": ObjectId("503b83dfad79cc8d26000004"),
"uid": "9a8a2c5b9418cc1baadfa41255791414",
"link": "http://stackoverflow.com/questions",
"tasks": [
{
"query": "lorem lorem",
"list": [
{
"timestamp": "159",
"provider": "Lor Em"
}
]
}
]
}
Mỗi phần tử bộ sưu tập bao gồm hàng loạt các nhiệm vụ. Mỗi phần tử TASK bao gồm Query + List-array.
tôi phải nối thêm nếu có thể mới TASK[index].LIST-object
(xem sơ đồ)
Nhưng tôi không thể hiểu được, làm sao tôi có thể kiểm tra tất cả trong CASE_TO_FIND_ELEMENT
:
db.myCollection.update(
{<CASE_TO_FIND_ELEMENT>},
{
$push: {
list: {
timestamp: "1233",
provider: "myNewProvier"
}
}
},
{
upsert: true,
multi: false
}
)
Cập nhật:
newQuery -> any string
(ví dụ từ máy chủ) để sử dụng trong document.tasks[index].query
giá trị này tôi thực hiện trong mã của tôi và phải kiểm tra nếu chúng tồn tại trong DB:
uid + link + (query + (TIMESTAMP + PROVIDER))
Cập nhật v2
> db.demo.find().pretty()
{
"_id" : ObjectId("564f04f4be5d6f2f98c77dcd"),
"uid" : "id3",
"task" : [
{
"list" : {
"lid" : "lX",
"ltext" : "demoX"
}
}
]
}
Tìm kiếm UID == "id3"
và trong nhiệm vụ mảng trong list- mảng "lid" == "lX"
và nếu không tìm thấy, hãy đẩy tài liệu mới vào task.list-array
:
db.demo.update({
"uid": "id3",
"task.list.lid": "lX"
}, {
$push: {
"task": {
"list": {
"lid": "lX2",
"ltext": "demoX2"
}
}
}
}, true, false)
Nhưng trong trường hợp này Mongo chèn một doc mới trong mảng :(
> db.demo.find().pretty()
{
"_id" : ObjectId("564f04f4be5d6f2f98c77dcd"),
"uid" : "id3",
"task" : [
{
"list" : {
"lid" : "lX",
"ltext" : "demoX"
}
},
{
"list" : {
"lid" : "lX2",
"ltext" : "demoX2"
}
},
{
"list" : {
"lid" : "lX2",
"ltext" : "demoX2"
}
}
]
}
bạn có thể giúp tôi xin vui lòng để thêm một số dữ liệu trong bộ sưu tập MongoDB? Cảm ơn bạn!
bạn có thể xây dựng những gì 'newQuery + etc' là? – chridam
@chridam: Tôi đã cập nhật câu hỏi của mình –