2017-02-10 3 views
0
db.books.find({ "status": "readED", $and: [ { "listingStatus": { $not: { $exists: true } } } ] }).forEach(function(book){ 

    db.getSiblingDB('reading').bookListing.find({"sellerSku": book.sellerSku, "sellerId":book.seller},{"sellerId": 1, "sellerSku": 1}).forEach(function(bookListing){ 

    printjson(bookListing); 


}); 

}); 

, когда я запускаю это, она даетКак обновить значение, если не существует в MongoDB

{ 
    "_id" : ObjectId("582cb4ad5a5a380sadas038dd2f72"), 
    "sellerId" : "e0a82c3d-079asdas0-49asda97-aasdascdf-0c320e3d7022", 
    "sellerSku" : "te227" 
} 
{ 
    "_id" : ObjectId("582cb4ae5a5a380038dd2f73"), 
    "sellerId" : "e0a82casdsa3d-07asdas90-4997-acdf-0c320e3d7022", 
    "sellerSku" : "TE231" 
} 

так это означает

есть книги, которая прочтенная и listingstatus не существует (как правило, listingstatus должно существовать)

в чтении db, есть список буклетов. Обычно, что мне нужно сделать, это:

  • Если книга не была прочитана, а в списке уставов не существует, вам необходимо обновить листинг, если эти книжные продавцы существуют в коллекции книг.

вместо

printjson(bookListing); 

мне нужно обновить

book.update (listingstatu) в течение каждого, но это возможно в JavaScript?

Что aboout это вместо

db.getSiblingDB('book').books.update({ "seller": bookListing.sellerId, "sellerSku": bookListing.sellerSku },{ $set: {"listingStatus" : "LISTING_CREATED"}}) 

из

printjson(bookListing) 

это WLL снова называют книгу дб.

но проверить я сделал Тхи вместо

printjson

db.getSiblingDB('book').books.find({ "seller": bookListing.sellerId, "sellerSku": bookListing.sellerSku },{ $set: {"listingStatus" : "LISTING_CREATED"}}) 

но оленья кожа показать anyhing

ответ

1

заменить printjson(bookListing) этим:

 // set listingStatus 
     bookListing.listingStatus = "someRandomValue"; 
     // save the document. As a document already exist in the collection 
     // with this _id, it will update it. 
     db.books.save(listingStatus); 

Так что ваш код будет выглядеть так:

db.books.find({ "status": "readED", $and: [ { "listingStatus": { $not: { $exists: true } } } ] }).forEach(function(book){ 

     db.getSiblingDB('reading').bookListing.find({"sellerSku": book.sellerSku, "sellerId":book.seller},{"sellerId": 1, "sellerSku": 1}).forEach(function(bookListing){ 

     // set listingStatus 
     bookListing.listingStatus = "someRandomValue"; 
     // save the document. As a document already exist in the collection 
     // with this _id, it will update it. 
     db.books.save(listingStatus); 

    }); 
    }); 

Это позволит обновить только соответствующие документы

+0

, но мне нужно, чтобы добавить это значение somerandom для не всех коллекций. Те, кто не существует, и чей продавец: продавец буклета id – mark

+0

и перечисление status принадлежат к книге db. не книжное полотно. – mark

+0

@mark bookList в этом контексте - это документ JSON, возвращаемый запросом, а не коллекция mongodb – felix

Смежные вопросы